行业知识
Python测试框架pytest介绍用法
2026-11-11 07:30:09
来源:互联网转载
1、介绍
pytest���python的一种单元测试框架,同自带的unittest测试框架类似,相比于unittest框架使用起来更简洁、效率更高
pip install -U pytest
特点:
1.非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
2.支持简单的单元测试和复杂的功能测试
3.支持参数化
4.执行测试过程中可以将某些测试跳过,或者对某些预期失败的Case标记成失败
5.支持重复执行失败的Case
6.支持运行由Nose,Unittest编写的测试Case
7.具有很多第三方插件,并且可以自定义扩展
8.方便的和持续集成工具集成
2、入门案例
import pytestdef test_a(): print("test_a") return 1 * 0def test_b(): print("test_b") return 1 / 0if __name__ == '__main__': pytest.main(["-s"]) 3、配置文件
默认规则:
模块名称为 test_*.py 或 *_test.py
类名称为Test开头
配置文件:pytest.ini
[pytest]addopts = -s # 通常是- 或者 -- 开头内容testpaths = ./ # 测试模块所在目录python_files = test_*.py *test.py # 测试模块文件名称规则,多个内容用空格分隔python_classes = Tedt_* # 测试类名称规则python_functions = test_* # 测试类函数或者方法的名称规则
4、标记跳过测试
无条件跳过:
@pytest.mark.skip(reason="我想跳过")def test_b(): print("test_b") return 1 / 0@pytest.mark.xfail(raises=ZeroDivisionError)def test_c(): print("test_b") return 1 / 0 有条件跳过:
@pytest.mark.skipif(2>10,reason="条件成立跳过)def test_c(): print("test_c") 5、参数化
对于相似的过程,但数据不一样的时候,可以使用参数化
parameterize(self.argnames, argvalues, ids=None):- argnames 参数名称 列表或者元组- argvalues 参数值 列表套元组- ids 测试id,可省略
例子:
@pytest.mark.parametrize(["a", "b"], [(1, 2), (3, 4)])def test_a(a, b): print("test_a++++++++++++++") assert a + b 6、夹具(前后固件)
在测试之前和之后执行,用于固定测试环境,及清理回收测试资源
# 方法夹具def setup_method(self): print("方法用例执行之前,需要的操作:热身")def teardown_method(self): print("方法用例执行之前,需要的而操作:拉伸")# 类夹具def setup_class(self): passdef teardown_class(self): pass# 函数夹具def teardown_function(): print("函数执行之前:拉伸") def setup_function(): print("函数执行之前:热身") # 摸块夹具def teardown_module(): print("函数执行之前:拉伸") def setup_module(): print("函数执行之前:热身") 7、插件
生成测试报告
安装: pip install pytest-html
使用:
1、命令行方式:pytest --html=存储路径/report.html
2、配置文件方式:
[pytest]addopts = -s --html=./report.html
多线程运行:pytest-xdist
控制用例的执行顺序:pytest-ordeing
失败用例重跑:pytest-returnfailures
生成企业级专业版的测试报告:allure-pytest
测试框架本身:pytest
管理基础路径:pytest-base-url
上一篇:apple服务器错误怎么办?
下一篇:游戏怎么开通服务器?