pytest fixture
1. 如何申明是一个fixture,只需要在函数前面加上装饰器 @pytest.fixture()
作用: 可以完成任务,也可以返回数据给测试函数
2. fixture的搜索规则:优先搜索当前的测试模块有没有fixture,其次在当前目录下面搜索conftest.py中搜索有没有fixture,再次往上一级目录进行搜索(类似于js中this对象的查找范围)
3. 使用fixture传递测试数据:
@pytest.fixture()
def a_tuple():
"""Return something more interesting."""
return (1, 'foo', None, {'bar': 23})
def test_a_tuple(a_tuple):
"""Demo the a_tuple fixture."""
assert a_tuple[3]['bar'] == 32
4. fixture的指定范围
fixture包含一个叫scope的可选参数,默认是scope='function',有四个可选参数 function class module session
scope='function': 使用了该fiture的函数,每次这个函数调用,该fixture都会运行(直接传入fixture的名称)
scope='class ,类运行的时候该fixture才会运行(在类上加的fixture,里面的方法都是可以使用这个fixture的,@pytest.mark.usefixtures('fixyure1','fixture2'))
scope='module ',该py文件运行的时候fixture才会运行
scope='session' 每次运行pytest命令的时候该fixture才会运行
使用测试方法中添加fixture参数和使用@pytest.mark.usefixtures('fixyure1','fixture2'),区别是只有前者才可以使用fixture的返回值
5. fixture的参数化:类似于测试方法的参数化
6. 剩下的几章是一些不常用的部分,但是可以去了解下 pytest+allure+jenkins在linux环境下执行,效果还是非常不错的(allure是可以定制报告)
7. 关于整体写项目的思路:底层封装好api,api上再封装一层业务层,业务层上再封装一层逻辑层,判断执行的结果,最外层使用pytest堆逻辑层的结果进行判断,并输出报告