1、补充:继上篇文章之后,补充的一个知识点。 A、前置操作得到的一些数据,如何传递给测试用例? yeild 返回值 在测试用例当中:以fixture函数名作为用例参数。用例参数接收返回值。 测试函数的参数:1、fixture 2、参数化 B、如果fixture有返回值, 那么,将它作为测试函数的参数时,则可以不用使用: @pytest.mark.usefixtures(“fixture的函数名称”) 直接运行即可。 2、被fixture打到标签的函数,整理成一个py文件,就叫:conftest.py。 A、只存放fixture。 B、可以对外共享 C、共享的范围:当前存放conftest.py目录下的所有用例。 包含所有的子孙目录。所有用例可共享 D、conftest.py文件可以常见多个,在不同的包下面。即:层级创建 E、使用优先级:就近原则: 发现fiXture: 用例自己的模块 -》用例所在目录下的 conftest.py -》目录的父级目录下的conftest.py F、嵌套使用: a\什么是嵌套:就是一个fixture想使用另一个fixture,在原有的代码上增加一些代码。 b\怎么嵌套:
@pytest.fixture def this_1_fixture(): qianzhi yield houzhi @pytest.fixture def this_2_fixture(this_1_fixture): qianzhi2 yield houzhi2c\执行顺序 qianzhi qianzhi2 houzhi2 houzhi d\嵌套级别 this_1_fixture >= this_2_fixture 例如:
@pytest.fixture # setup,teardown def root(): print(" 项目根目录下的conftest.py 作用域为测试函数的 **** 前置代码") yield True print(" 项目根目录下的conftest.py 作用域为测试函数的 **** 后置代码") @pytest.fixture def init2(root): # 直接使用root这个fiXture的前置后置,返回值。在它的基础上,增加一些内容。 print(" 增加的:根目录包下的conftest.py 作用域为测试函数的 **** 前置代码") yield root print(" 增加的:根目录包下的conftest.py 作用域为测试函数的 **** 后置代码") # @pytest.fixture # setup,teardown 和上面的def init2(root)效果相同。 # def init(): # print(" 项目根目录下的conftest.py 作用域为测试函数的 **** 前置代码") # print(" 增加的:day2包下的conftest.py 作用域为测试函数的 **** 前置代码") # 增加的 # yield True,100 # print(" day2包下的conftest.py 作用域为测试函数的 **** 后置代码") # print(" 增加的:项目根目录下的conftest.py 作用域为测试函数的 **** 后置代码") # 增加的 """ 执行顺序: root的前置 init2的前置 init2的后置 root的后置 """