软件测试 / 测试开发丨学习笔记之 Pytest 使用
本文为霍格沃兹测试开发学社学员笔记分享
1. 简介
pytest 是一个成熟的全功能 python 测试框架
测试用例的 skip 和 xfail,自动失败重试等处理
能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appnium 等自动化测试,接口自动化测试
pytest 有很多第三方插件,并且可以自定义扩展,如 pytest-allure(完美 html 测试报告生成)等
2. 测试文件:
test_*py *_test.py
用例识别
测试方法都要以 test 开头
测试类中不要添加__init__方法
Test 类包含的所有 test_的方法 (测试类不能带有_init_方法)
不在 class 中的所有 test_*方法
安装:
示例:
在 pycharm 中运行 pytest
pytest 的框架结构
setup 代表在每一个测试函数前执行
teardown 代表在每一个测试函数后执行
3. 参数化
mark 是 pytest 内置的标签,可以处理一些特殊的测试用例
4. 标记测试用例:对于只执行某些符合要求的测试用例的场景中使用
实现:在测试用例方法上加 @pytest.mark.标签名
执行:-m 执行自定义标记的相关用例
pytest -s test_mark.py -m apptest
pytest -s test_mark.py -m=webtest
pytest -s test_mark.py -m “not ios” #使用逻辑运算符的情况
注意:在执行测试用例的时候,会抛出警告,主要是因为自定义的标签名并没有被 pytest 识别导致的,可以创建一个名为 pytest.ini 的文件,在里面写入如下格式解决:
根据实际情况自行更改
5. 跳过,预期失败用例的设置
skip - 始终跳过该测试用例
skipif - 遇到特定情况跳过该测试用例
xfail - 遇到特定情况,产生一个期望失败输出
skip 应用场景
调试时不想运行某个测试用例
标记无法中某些平台运行的测试功能
在某些版本中执行,其他版本跳过
方法 1:添加装饰器
@pytest.mark.skip@pytest.mark.skipif
xfail
与 skip 类似,预期结果为 fail,标记用例为 fail。
用法:添加装饰器 @pytest.mark.xfail
注意:加了 xfail 装饰器的测试用例还是会执行,但是不会标红,会当作预期失败的用例执行
6. 命令行方式运行多条测试用例
执行包下所有的用例:pytest/py.test [包名]
执行单独一个 pytest 模块:pytest 文件名.py
运行某个模块里面的某个类:pytest 文件名::类名
运行某个模块里某个类的方法:pytest 文件名.py::类名::方法名
常用命令行参数:
pytest 的异常处理方法:pytest.raise()
可以捕获特定的异常
获取捕获的异常细节(异常类型,异常信息)
发生异常,后面的代码将不会执行
方法的第一个参数是捕获的预期异常,如果指定多个异常,可以用元组包起来。
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b10264aab6924b82287093e3】。文章转载请联系作者。
评论