<<pytest测试实战>>读书笔记第三章

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堆逻辑层的结果进行判断,并输出报告

原文地址:https://www.cnblogs.com/wenshu/p/12266969.html