一、前言

本文章主要会讲解Python中pytest框架的讲解,介绍什么是pytest、为何要测试、为何使用以及参考和扩展等等,话不多说,咱们直接进入主题哟。

二、pytest讲解

2.1 什么是pytest?

pytest是一款单元测试框架,在编程过程中,单元主要指的是代码中最小的组成部分,例如函数或类,在面向对象中,最小的单元就是类下面的方法。

当我们编写好一段程序后,会对这些函数和方法进行检测,是否出现程序错误,这种对程序的函数和方法进行测试的过程,就叫做单元测试。

pytest的测试框架类似于unittest框架相似,但pytest的测试框架比unittest更加简洁、高效。

2.2 为什么使用pytest?

pytest与unittest类似,但pytest还是有很多的优势:

"""
pytest优势
1、pytest能够兼容unittest,如果之前用例是unittest编写的,可以使用pytest直接进行使用
2、pytest的断言直接使用assert断言,并非使用self.asert等语法语句以及其他各式各样的断言方式
3、pytest对于失败的测试用例会提供非常详细的错误信息
4、pytest可以自动发现并收集测试用例
5、pytest有非常灵活的fixture管理
6、pytest有mark标记机制,可以标记某些用例为冒烟测试用例
7、pytest提供了非常丰富的插件系统
8、pytest不需要写类,unittest是需要写类并继承的,这里pytest更加简洁
"""

2.3 使用pytest

安装pytest库后设置默认的运行器为pytest:

def test_add():assert True

框架意味着规则,pytest用例规则如下:

"""
pytest用例规则:
1、模块名称 test开头.py结尾,或者*_test.py
2、测试用例函数的名称 def test_XXX()
3、可以不定义测试类
""""""
pytest的运行方式:
1、pycharm当中的运行图标,pytest开头开头运行,如不是pytest可以在setting中查找pytest并设置成pytest运行器
2、pytest命令行:要进入项目的根目录运行pytest命令,pytest命令会自动收集运行指令时候,所有子目录下符合要求的测试用例,例如test_login.py,模块且以test开头,函数test开头,类也是如此
3、通过python包或者python模块运行"""

2.4 pytest的运行方式

pytest有三种运行方式:

"""
方式一:直接通过代码左侧的三角进行运行(pycharm)
""""""
方式二:通过命令行运行 -- pytest -- html=output.html
""""""
方式三:通过python运行
"""
from datetime import datetimeimport pytestdate_str = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
# 测试报告的名称
report_name = date_str + "六六君的专属测试报告.html"pytest.main([f"--html={report}"])

​2.5 pytest高级特性

2.5.1 pytest用例筛选

我们都做过冒烟测试,也知道冒烟测试用例,pytest支持用例筛选,你可以在想要的用例上进行标记,以此来表示这是一个冒烟测试用例:

import pytest# 格式为:@pytest.mark.自定义标记名
@pytest.mark.smoke
def test_True()assert True@pytest.mark.smoke
def test_False()assert False

我们可以给一个用例或多个用例附上单独的标记,但这样是无法运行的,我们需要先注册标记,新建一个pytest.ini的配置文件并进行配置:

[pytest]
markers = smoke

注册完成后我们需要运行,在命令行输入pytest - m "smoke",这样就可以运行刚刚标记过的测试用例了,值得一提的是,如果这个标记是在函数上,那么就代表着函数属于标记的筛选用例,如果标记在类上,那么整个类下的所有函数都属于筛选用例,如例子所示,即全部为冒烟测试用例

"""
用例筛选流程:
1、需要在pytest.ini中注册标记的名称
2、在测试用例函数或者测试用例类上面加上@pytest.mark.标记名
3、运行指定标签 pytest -m "标记名"
"""

如果运行多个标记那么可以继续在函数或类上再次进行新的标记,例如login标记,意味着我只想要执行登录模块的冒烟测试用例里,那么再次进行注册并运行即可,运行使用pytest -m "smoke and login",如果是冒烟测试用例和登录模块用例满足一个即可,那么就可以使用or即可,两者选其一,满足即可运行。

2.5.2 pytest实现数据驱动

pytest实现数据驱动可以使用unittest进行实现,也可以使用自己的ddt:

注意:pytest参数化与unittest的参数化只能有一个,不能够共同使用

"""
pytest使用unittest进行数据驱动的实现
"""
import unittest
imoort pytest
from unittesetreport import ddt, list_data@pytest.mark.smoke
@unittestreport.ddt
class TestAddwithUnittest(unittest.TestCase):@unittestreport.list_data(["hello", "world", "mengxiaotian"])def test_add_three(self, case_info):aseert "六六君" in "最棒的六六君"def test_add_four(self):assert "六六君" in "最棒的六六君""""
使用自己的pytest实现
"""
@pytest.mark.smoke
@pytest.mark.login
@pytest.mark.parametrize("case_info", ["hello", "world"])
def test_add(case_info):assert True

​2.5.3 pytest夹具

pytest夹具会与unittest有一些不同,详见代码:

def setup_function():"""前置条件,每个测试用例之前"""print("hello, world!")def teardown_function():"""后置条件,每个测试用例之后"""def test_hello():assert 520 == 1314def test_world():assert "六" in "六六君"
import pytest# 声明这是一个测试夹具
@pytest.fixture()
def connet_to_db():print("前置条件:正在连接数据库...")yield # 在yield前的都是前置
# 清理动作print("后置清理,断开数据库连接...")@pytest.mark.usefixtures("connect_to_db")
def test_mengxiaotian_love():assert 1314 == 1314

2.6 allure下载

万能百度搜索allure进入到GitHub下载。 找到Download的字眼,并在其中点击releases

2.7 pytest插件:allure-pytest安装与目录生成

通过pip install allure-pytest进行安装

生成报告在命令行中输入:pytest --alluredir=目录

查看报告使用:allure serve 目录

allure可以翻译成中文,具体这里不过多阐述如何查看报告数据,有兴趣的同学可以自行了解

2.8 unittest转pytest形式

如果以代码形式呈现会比较复杂,笔者直接使用备注进行说明,大家如果之前的项目是unittest的项目那么可以根据本次说明转换成pytest:

"""
unittest转pytest:
1、数据驱动的ddt换成pytest的标记形式
2、unittest的testcase继承需要移除
3、self.asserEqual 需要重新封装
4、setUpclass 改成 pytest setup_class (参考上面的代码)
"""

三、总结

本篇文章就到这里了,喜欢的小伙伴可以点赞收藏评论加关注哟,关注我每天给你不同的惊喜。

接口自动化测试实战之pytest框架+allure讲解相关推荐

  1. 【Python自动化测试26】接口自动化测试实战六_pytest框架+allure讲解

    文章目录 一.前言 二.pytest讲解 2.1 什么是pytest? 2.2 为什么使用pytest? 2.3 使用pytest 2.4 pytest的运行方式 2.5 pytest高级特性 2.5 ...

  2. python接口自动化测试面试题_Python 接口自动化测试实战

    Python接口自动化测试实战 简介 本课程主要围绕Python相关库再服务端接口自动化测试中的应用展开介绍,重点讲解接口自动化基础.编写接口自动化脚本.框架原理.项目实战,此外还扩展介绍多用例管理与 ...

  3. 【python数据驱动+接口自动化测试】pytest+allure+yaml+jenkins+git(gitlab/gitee)下的接口自动化测试实战

    大家好,我是好学的小师弟.今天和大家分享下我前段时间的工作学习心得-接口自动化测试及其全套工作流程. 注:本文的侧重点在于工作流程,代码讲解.工具安装步骤方面可能就浅尝辄止了. 目录 前言: 工作流程 ...

  4. Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架

    目录 前言 实现功能 目录结构 依赖库 安装教程 接口文档 如何创建用例 创建用例步骤 用例中相关字段的介绍 如何发送get请求 如何发送post请求 如何测试上传文件接口 上传文件接口,即需要上传文 ...

  5. 〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

    说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区. 福利:除了通过订阅"白宝书系列专栏"加入社区获取 ...

  6. 面面俱到的Java接口自动化测试实战

    第1章 接口自动化测试整体认知 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程. 1-1 导学章节 1-2 什么是接口 1-3 为什么要做接口测 ...

  7. Python接口自动化测试实战详解,你想要的全都有

    目录 前言 一.接口自动化测试概述 二.搭建Python接口自动化测试框架 三.常用接口自动化测试库示例 四.总结 前言 接口自动化测试是当前软件开发中最重要的环节之一,可以提高代码质量.加速开发周期 ...

  8. python实现接口自动化的视频_python实现头条项目接口自动化测试实战

    配套资料添加qq2212232413 讲解方式 课程内容条理清晰,目标明确,由浅入深,环环相扣.重点部分进行额外梳理和总结,更易理解和吸收. 课程亮点 1.接口测试框架搭建 2.黑马头条项目 3.数据 ...

  9. python普通类实现接口_python实现头条项目接口自动化测试实战

    教程简介 python+reqeust库,轻松实现黑马头条项目接口自动化 讲解方式 课程内容条理清晰,目标明确,由浅入深,环环相扣.重点部分进行额外梳理和总结,更易理解和吸收. 课程亮点 1.接口测试 ...

最新文章

  1. Flutter学习记录(三、Flutter项目学习navBar的使用)
  2. 非常实用的 Python 库,推一次火一次
  3. 【CodeForces - 697D】Puzzles(树形dp,期望dp)
  4. 聊聊 rel=noopener
  5. mysql数据库密码字段查看_mysql基本操作(数据库,表,字段,记录)
  6. 关于UnityHub更换位置后找不到编辑器以及登录界面白屏的问题
  7. 软件开发人员简历项目经验怎么写
  8. 神州十二号载人飞船和空间站对接成功 我们的目标是星辰大海!
  9. win10进程太多怎么优化_摆脱流氓软件,这16款实用的Windows优化软件让你的系统更好用...
  10. centos7构建kylo-0.10.1
  11. Android 最常用的设计模式二 安卓源码分析——组合模式(component)
  12. KGB知识图谱完善保险行业的知识应用体系
  13. memory parity error
  14. 经济学人The Economist学习(笔记词汇)Day1
  15. 用PhotoShop快速给证件照排版
  16. 微信小程序获取数据接口动态渲染Echarts折线图
  17. android github框架大全
  18. 从飞手转入内业数据处理 一飞手的心路历程
  19. 办公室搬迁的注意事项.办公室文件的整理和打包方法有哪些
  20. 铁路工程词汇-中英对照

热门文章

  1. html 伪元素放入标签,CSS中的before和:after伪元素使用详解
  2. python excel 格式刷_今天竟然发现了Excel 的明显bug,格式刷一定要小心用
  3. C语言字符函数strcasecmp的实现
  4. 小白入门photoscan
  5. csgo无法连接服务器和系统有关吗,csgo-连接官方服务器失败解决方法
  6. 主要的排序算法——Java实现
  7. php ms2,wordpress主题:芒果小站主题(M2)重构版
  8. MySql数据库函数集
  9. 仿拼多多拼单成功的弹幕队列消息提示
  10. 解码resources时里面是空的_支持高清6K解码,AI人工智能语音,腾讯企鹅极光盒子1v闪亮登场...