pytest

一、pytest是单元测试框架

单元测试:对软件开发中,对软件的最小单位(函数、方法)进行正确性检查测试。

java框架:jnuit和testing。

python框架:unittest和pytest。

流程:i:测试发现:从多个文件中找到测试用例。

ii:测试执行:按照一定顺序和规则去执行并生成结果。

iii:测试判断:通过断言判断预期结果和实际结果的差异。

iV:测试报告:统计测试进度,耗时、通过率,生成测试报告。

二、单元测试框架和自动化测试框架的关系

自动化测试框架:

  • 提高测试效率,降低维护成本。
  • 减少人工的干预提高测试的准确性,增加代码的重用性。
  • 核心思想让不懂代码的人也能实现自动化测试。

单元测试框架只是自动化测试框架的组成部分之一。

三、pytest简介

python成熟的单元测试框架,更灵活。

可以和selenlum,request,applum结合实现web、接口、app自动化。

可以实现测试用例的跳过和失败用例重试。

pytest可以和allure生成美观的测试报告。

pytest可以和jenkins持续集成。

pytest有很多强大的插件:pytest-html(生成html格式的自动化测试报告)

pytest-xdlst(测试用例分布式执行,多CPU分发)

pytest-ordering(改变测试用例的执行顺序)

pytest-returnfailures(用例失败重跑)

allure-pytest(生成美观的测试报告)。

插件批量下载:创建requirement.txt,将插件的名称下上,然后执行pip install -r requirement.txt即可。

四、使用pytest

  1. 模块名必须以test_开头或者_test结尾。
  2. 测试类必须以Test开头,并不能有init方法。
  3. 测试方法必须以test开头。

执行测试用例方式一:

  • 运行所有:pytest
  • 指定模块:pytest -vs test_login.py
  • 指定目录: pytest -vs ./interface_testcase

-s 表示输出调试信息,包括print打印信息。

-v 表示输出详细信息

-vs 表示v和s一起使用

-n 表示多线程使用:pytest -vs ./testcase/test_login.py -n 2

执行测试用例方式二:

通过读取pytest.ini配置文件运行。

pytest.ini文件是pytest的单元测试框架的配置文件。

五、分组执行(冒烟、分模块执行)

在测试用例文件中添加pytest.mark.xxx标记用例属于什么

pytest.mark.run(order=2) 通过设置不同的order设置用例执行顺序

pytest.mark.skip(reason="xxx") 跳过测试用例,原因xxx

pytest.mark.smoke 设置该用例是smoke类型的

在全局配置文件pytest.ini添加上不同的分组

执行pytest -m "smoke" #这样-m表示分组,就是执行通过smoke标记的用例。

在pytest.ini 文件的addopts参数追加参数生成报告

--html ./report/report.html 在report目录下生成report.html的测试报告

六、setup/teardown,setup_class/teardown_class

setup是每个测试用例之前的初始化代码,每个测试用例执行之前都会调用

teardown是每个测试用例之后的扫尾代码,每个测试用例执行之后都会调用

setup_class是每个类执行之前的初始化工作,只会执行一次

teardown_class是每个类执行之后的扫尾工作,只会执行一次

可以通过@pytest.fixture 来实现部分用例的前后置函数调用。

七、结合allure生成报告

1、下载,解压配置path路径

https://github.com/allure-framework/allure2/release

path路径: 找到bin文件路径,如:E:\allure-2.13.7\bin 配置到path中

验证:allure --version。如果dos可以验证但是pycharm验证失败,重启pycharm

2、加入命令生成json格式的临时报告

--alluredir /temp

3、生成allure报告

在all.py的main函数之后添加

os system('allure generate /temp -o ./report --clean')

八、接口测试Request库

用来发送http请求以及响应的python的第三方库,主要用于接口自动化。

//安装
 pip install requests

//常用方法
request.get()
request.post() //data和json传参,区别在于请求头的Content-Type来区别

request.put()
request.delete()

你可能感兴趣的:(测试,pytest,单元测试,junit)