pytest自动化的配置文件
1、pytest.ini:pytest框架的核心主配置文件,可以改变pytest的默认行为,一般放在项目的根目录,运行规则无论是主函数模式还是命令模型运行,都会读取这个配置文件,有很多可配置的选项;
Markers :作用是注册标记,防止拼写错误, 分组执行(冒烟,分模块执行,分接口和 web 执行)
smoke:冒烟用例,分布在各个模块里面
pytest -m 'smoke'
pytest -m 'smoke or usermanage or productmanage'
testpaths :指示pytest去哪里访问。testpaths是一系列相对于根目录的路径,用于限定测试用例的搜索范围。只有pytest未指定文件目录参数或测试用例标识符时,该选项才有作用;
addopts :pytest用命令行运行时,有时候需要经常要用到某些参数,又不想重复输入,这时可以使用pytest.ini文件的addopts设置命令行的参数,用空格分隔;
常用指令:
-v:显示运行用例的更详细信息
-s:输出调试信息,包括 print() 打印信息
-x:表示只要有一个用例的报错,那么测试停止
-maxfail=2:出现两个用例失败则停止运行用例
-rerunfail num:失败用例重跑
-k:根据测试用例的部分字符串指定测试用例,如:pytest -vs ./testcase -k "ao"
-html ./report/report.html:生成html 的测试报告
-n:支持多线程或者分布式运行测试用例,如:pytest -vs ./testcase/test_login.py -n 2
2、__init__.py:每个测试子目录都包含该文件时,那么在多个测试目录中可以出现同名测试文件,作用:标识该目录下的py文件为module package;
3、conftest.py:是本地的插件库,conftest.py是固定名称,pytest会自动找到该文件,并读取里面的数据,其中的hook函数和fixture将作用于该文件所在的目录以及所有的子目录,作用:实现数据、代码等共享;
如:在conftest中自定义pytest框架的前后置函数,作用于该目录下以及子目录下的所有测试用例;
作用域:function(测试用例)> class(测试类) > module(测试模块) > session(会话)
特性:
1)前后置函数的名称是自定义的,前置、后置是都放在一个函数中,使用关键字yield关键字区分前后置;如:
2)这个前后置函数是独立的,不与测试类放在一起;
3)作用域:测试函数、测试类、测试模块、session;
4)在测试用例中调用这个自定义的前后置函数时,有两种情况:
情况一:
在需要调用的测试模块、测试类、测试函数前加 @pytest.mark.usefixture(‘自定义的fixture函数名称’),且不需要调用返回值;
如:@pytest.mark.usefixture('自定义的fixture函数名称')
def test_login(self):
pass
情况二:
测试模块、测试类、测试用例函数需要调用这个自定义前后置函数的返回值,则需要把fixture函数名称作为测试用例参数;如:
方法一:在需要调用的测试模块、测试类、测试函数前加 @pytest.mark.usefixture(),自定义的fixture函数名称作为测试用例函数的参数,如:
@pytest.mark.usefixture()
def test_login(self, '自定义的fixture函数名称'):
pass
方法二:直接在测试用于函数里加 ‘ 自定义的fixture函数名称 ’ 作为参数, 如:
方法三:传递参数