沈阳酒店企业网站制作公司,如何制作网上商城,网站改版活动,wordpress电视剧采集解析1、介绍 pytest是python的一种单元测试框架#xff0c;同自带的unittest测试框架类似#xff0c;相比于unittest框架使用起来更简洁、效率更高 pip install -U pytest 特点#xff1a; 1.非常容易上手,入门简单,文档丰富#xff0c;文档中有很多实例可以参考 2.支持简单的单…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 / 0pytest.mark.xfail(raisesZeroDivisionError)
def test_c():print(test_b)return 1 / 0
有条件跳过
pytest.mark.skipif(210,reason条件成立跳过)
def test_c():print(test_c)
5、参数化 对于相似的过程但数据不一样的时候可以使用参数化 parameterize(self.argnames, argvalues, idsNone):
- argnames 参数名称 列表或者元组
- argvalues 参数值 列表套元组
- ids 测试id可省略例子
pytest.mark.parametrize([a, b], [(1, 2), (3, 4)])
def test_a(a, b):print(test_a)assert a b 1006、夹具前后固件 在测试之前和之后执行用于固定测试环境及清理回收测试资源 # 方法夹具
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