python pytest实战二:fixture的实例化顺序

前言:fixture是在测试函数运行前后,由pytest执行的外壳函数,代码可以定制,满足多变的测试需求。是pytest用于将测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。功能包括:

  • 定于传入测试用例的数据集
  • 配置测试前的初始状态
  • 为批量测试提供数据源

一、fixture的调用方法:

  • 测试用例的方法,直接通过fixt函数名字作为实参调用
  • 测试用例的方法上一行,使用装饰器@pytest.mark.usefixfures("test1"),注意:通过装饰器调用fixture函数时,是由内往外调用。比如:
@pytest.mark.usefixtures("login")
@pytest.mark.usefixtures("get_username")
将先调用get_username,再调用login。
  • fixture函数,使用参数:autouse=True自动应用,如果要返回值,需要传入fixture函数名
  • fixture函数,使用fixture函数作为参数,调用其他fixture函数。

多个fixture的实例化顺序,遵循以下原则:

  • 高级别的作用域的(比如session)先于低级别作用域的(比如:class或mfunction)实例化;
  • 相同级别作用域的,其实例化的顺序遵循它们在测试用例中被声明的顺序(也就是形参的顺序),或者fixture之间相互调用关系;
  • 使能autouse的fixture,先于同级别的其它fixture实例化。
  • 多个相同作用域的autouse fixture,其实例化顺序遵循fixture函数名的排序;
  • 作用域(session>module>class>function)
  • 允许使用多个fixture

 

 

郭德纲

posted @ 2021-02-03 20:52  半路回归  阅读(324)  评论(0)    收藏  举报