自动化框架——pytest
pytest的用处和学习目的:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
测试用例的skip和xfail处理
可以很好的和jenkins集成
report框架----allure 也支持了pytest
环境搭建:

2:命名规范:
所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
3:pytest的运行方式,断言:
1)通过pycharm的右键运行

2):通过命令行方式运行
右键open in 选择终端的方式来输入命令行执行



3):通过main函数运行

pytest的断言:

pytest的运行清单:

pytest的测试固件:(setup teardown)
1.setup和teardown主要分为:模块级,类级,功能级,函数级。
2.存在于测试类内部
代码示例:
- 函数级别setup()/teardown()

- 2.2.类级别

pytest的执行顺序,跳过:
1)执行顺序


2)不执行,跳过,或者满足条件跳过


@pytest.mark.xfail
除了上面学习的pytest.xfail(),xfai还有一种使用方法。就是@pytest.mark.xfail标签,他的含义是期望测试用例是失败的,但是不会影响测试用例的的执行。如果测试用例执行失败的则结果是xfail(不会额外显示出错误信息);如果测试用例执行成功的则结果是xpass。
吃个荔枝:我们直接在测试用例上加上@pytest.mark.xfail标签。



pytest的mark标签
mark标签和skipif标签用来标记用例,作用于冒烟测试,不需要执行全部用例时来标记执行。


mark标签的注意事项,以及ini配置文件

文件名固定为pytest.ini,一般和测试驱动层放在一起,即根目录


pytest的参数化和测试套件,fixture


参数化可以结合文件读写的方法,使用csv或txt文件进行传参。
fixture是为了两个方法之间的传参

如果返回值不止一个,可以使用列表或字典进行返回,再到第二个方法进行列表或字典的读取。

涉及多个用例都需要参数化,可以将参数函数放置在conftest.py文件中,同理也是在根目录

至此。pytest的两个重要配置文件pytet.ini和conftest.py就讲完了!是重点内容要切记
pytest的三方插件:失败停止,失败重跑,多线程分布式




pytes的测试报告和allure生成的测试报告

由于pytest自带的报告比较简陋,可以使用钩子函数进行添加信息,如:测试报告人,测试时间,抓取错误截图等。实例如下:




以下是allure生成的测试报告和代码,详细的allure学习另开一个博客


浙公网安备 33010602011771号