当前位置: 首页 > 工具软件 > pytest > 使用案例 >

pytest测试框架(一):初识pytest

谭浩皛
2023-12-01

一、pytest的简介

  • pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手。
  • pytest可以和selenium、request,appium结合实现web自动化,接口自动化,app自动化。
  • pytest可以实现测试用例的跳过以及reruns失败用例重试。
  • Pytest可以和allur生成美观的测试报告。
  • pytest可以和jenkins持续集成
  • 有强大的插件,并且这些插件能够实现很多的实用的操作。

二、相关库

pytest-xdist 测试用例分布式执行,多cpu分布。
pytest-html,生成html格式的自动化测试报告。
pytest-ordering 用于改变测试用例的执行顺序。
Pytest-rerunfailures 用于失败后的重跑。
Pytest-html 生成html格式的自动化测试报告
allure-pytest 用于生成美观的测试报告。
安装命令:
pip install -r requirments.txt

三、使用pytest,默认的测试用例的规则及基础应用

  • 模块名必须以test_开头,或者_test结尾。
  • 测试类必须以Test开头,并且有init方法。
  • 测试方法必须以test开头

四、pytest测试用例的运行方式:

1.主函数模式

(1)运行所有用例:pytest.main(['-vs'])
(2)运行指定模块的用例:  pytest.main(['-vs', 'test_login.py'])
(3)指定目录去执行:pytest.main(['-vs', 'interface_testcase'])
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

2.命令模式

(1)运行所有用例:pytest -v
(2)运行指定的用例:pytest  -v  test_login.py
(3)指定目录去执行:pytest  -vs     interface_testcase
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成
例子:
 # 运行指定类或者方法或者函数的用例
    pytest.main(['-vs', './interface_testcase/test_interface.py::test_04_func'])
    # 运行指定模块下的类里面的方法
    pytest.main(['-vs', './interface_testcase/test_interface.py::TestInterface::test_01_zhiliao'])

参数详解:

-s:表示输出调试的信息,包括print打印的信息
-v:表示测试用例的详细信息
-vs:两个参数可以一起使用
-n:支持多线程或者分布式运行测试用例。

如:pytest -vs ./web_testcase/test_login py -n 2
-reruns num:表示失败用例参数重跑
如: 将失败的用例多跑两遍
pytest.main([’-vs’, ‘./web_testcase/test_product.py’
-x: 表示只要有一个用例报错,测试停止
–maxfail=2:表示两个用例失败停止执行
-k:根据测试用例的部分字符串指定执行测试用例
如: pytest -vs ./web_testcase -k ‘ao’
生成报告:
–html:addopts = -vs --html ./report/report.html(配置文件设置)

3.通过读取pytest.ini配置文件运行(真实企业运用的)

**Pytest.int这个文件是pytest单元测试框架的核心配置文件。**
1.位置:一般放在项目位置的跟目录。
2.编码:编码格式必须是ANSI,可以使用notpad++修改编码格式。
3.作用:改变pytest默认的行为。
4.运行规则:不管是主函数的模式还是命令行 模式,都会去读取这个配置文件
文件内容:
[pytest]
# 命令行的参数,用空格分隔
addopts = -vs
# 测试用例的路径
testpaths = ../PythonApiTest/PyTest/web_testcase
# 模块名的规则
python_files = test*.py
# 类名的规则
python_classes =Test*
#方法名发规则
python_function =test
markers = smoke usermanage productmanage

五、pytest执行测试用例的顺序:

unittest 是通过ascll码从大到小的顺序执行
Pytest 默认从上到下
改变默认的执行顺序,使用mark标记。
如: @pytest.mark.run(order=2)

六、如何分组执行(冒烟,分模块执行,分接口和web执行)

Smok: 冒烟测试,分布在各个模块里面
Pytest -vs -m smoke
Pytest -vs -m smoke or usermanage

七、pytest跳过测试用例

(1)无条件跳过:@pytest.mark.skip(reason=“跳过”)
(2)有条件跳过:@pytest.mark.skipif(age>=18,reason=‘符合条件跳过’)

八、pytest结合allure-pytest插件生成allure测试方法

Pytest-html
allure-pytest:
1.下载,解压,配置path路径
2.生成json格式的临时报告
addopts = -vs --alluredir ./temp 生成临时目录temp
3.生成allure报告,在执行页添加下面代码
os.system(‘allure generate ./temp -o ./report --clean’)、
allure generate 命令,固定写法
./temp 临时的json格式报告的路径
-o 输出output
./report 生成allure的报告的路径
–clearn 清空./report路径原来的报告

 类似资料: