- 介绍
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
测试用例的skip和xfail处理
可以很好的和jenkins集成
report框架----allure 也支持了pytest
- 安装
pip install pytest
或者在pycharm设置中进行安装
检查安装是否成功以及安装的版本,命令行命令如下:
pytest --version
- 用例编写
当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。
默认的用例识别的规则
用例文件:所有文件名为 开头 或者 开头的文件会被识别为用例文件。test__test
用例类,测试文件中没有每个 Test 开头的类型就是一个测试用例类。
测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例,
例如:
断言
pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
assert xx :判断 xx 为真
assert not xx :判断 xx 不为真
assert a in b :判断 b 包含 a
assert a == b :判断 a 等于 b
assert a != b :判断 a 不等于 b
- 执行
只重新运行上次失败的用例
pytest --lf -vs
先运行上次失败的用例再运行其余的测试用例
pytest --ff
python代码执行pytest(main函数)
- 常用命令行参数
-x 用例一旦失败,就立刻停止执行
--maxfail=num 用例失败个数达到num后停止执行
-m 标记用例
-k 执行包含某个关键字的测试用例
-v 打印详细日志
-s 打印输出日志(一般-vs一起使用)
--collect-only 收集测试用例
- 常用装饰器
参数化
class Testdome:
a = ["1", "2", "3"]
# 参数化,ids表示起别名
@pytest.mark.parametrize("sum", a, ids=["test1", "test2", "test3"])
def test_demo(self, sum):
print(sum)
跳过测试用例
@pytest.mark.skip
#加入跳过原因
@pytest.mark.skip(reason="该条用例跳过")
- 异常处理机制
try:
except
pytest.raises()
- 常用数据驱动
excel
文件格式
数据驱动案例
csv文件
文件格式
数据驱动案例
json文件
文件格式
数据驱动案例
yaml文件
文件格式
数据驱动案例