这篇文章上次修改于 795 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
pytest 安装:
主要是python安装完成后使用pip安装
pip install pytest
pytest 代码规范:
测试用例命名规范
文件要在test_开头,或者_test结尾
类要以Test开头,方法要以test_开头
测试类不可以包含__init__()方法
pytest 常用的命令行参数
pytest –collect-only 只收集用例
pytest -k “add ” 匹配所有名称中包含add的用例(‘add or div’ ‘TestClass’)
pytest -m mark标签名 标记
pytest - - junitxml=./result.xml 生成执行结果文件
pytest –setup-show 回溯fixture的执行过程
更多的用法使用pytest —help查看帮助文档
pytest setup/teardown
类似的setup,teardown同样更灵活
模块级(setup_module/teardown_module)模块始末,全局的(优先最高)
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_methond)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
参数化和数据驱动
利用 pytest.mark.parametrize() 方法进行数据生成,可更为灵活的进行接口测试
可利用 pyyaml 包进行数据yaml格式导入
# yaml 参数导入1
@pytest.mark.parametrize('par', yaml.load(open('./par.yaml', 'r'), Loader=yaml.FullLoader))
def test_yaml_add(self, par):
assert self.cal.add_fun(par[0], par[1]) in [3, 5, 7]
# yaml 参数导入2
@pytest.mark.parametrize('a,b', yaml.load(open('./par.yaml', 'r'), Loader=yaml.FullLoader))
def test_yaml_add2(self, a, b):
assert self.cal.add_fun(a, b) in [3, 5, 7]
yaml 文件
- [1, 2]
- [3, 4]
- [2, 5]
- [3, 6]
- [2, 7]
本文所有文件地址:github点击这里 gitlab点击这里 gitee点击这里