这两天突然想把遗忘已久的pytest总结下,有些东西时间长了真的就忘了,所以今天花了一小时回顾了下,在这总结下加深印象,废话不多说,开始。。。
1.先简单介绍下pytest,他的优点是什么,为什么这么流行?**
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
a.简单灵活,容易上手
b.支持参数化
c.能够支持简单的单元测试和复杂的功能测试,
d.还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
e.具有很多第三方插件,据说还可以自定义扩展,像我经常使用的pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)后面这几个我还没用过{pytest-xdist(多CPU分发),
测试用例的skip和xfail处理}
f.可以和jenkins集成,而且allure也支持pytest
插件地址:https://plugincompat.herokuapp.com
通过以上,可以看到功能真的特别强大,下面开始我的总结之旅:
2.pytest的常见命令
a.查看 pytest 版本
pytest --version
b.显示可用的内置函数参数
pytest --fixtures
c.通过命令行查看帮助信息及配置文件选项
pytest --help(比较常用的命令)
d. 出现2个失败就终止测试
pytest --maxfail=2
e.运行模块中的指定用例
pytest pytest_test.py::test_begin
f.运行模块中类下面的指定用例
pytest pytest_test.py::TestCase::test_01_sum
h.根据指定的标签名运行
pytest -m "标签名"
标签需要在pytest.ini中进行注册:
然后在测试用例中使用,使用的标记方式为:
i.模糊匹配
pytest -k "div"
pytest -k “MyClass and not method” 匹配的范围是文件名、类名、函数名为变量,用and来区分 可以使用not
or等进行多个连接的匹配
使用or可以进行多个连接
j.调试脚本:
-s 指定打印的详细信息,打印print()中输出的调试信息等
-v 打印的信息有passed和failed标志,并且打印出来的信息包含路径 pytest test_se.py -s pytest test_se.py -s -v