pytest实现fixture的原理,pytest fixtures_1

  pytest实现fixture的原理,pytest fixtures

  本文主要介绍pytest官方文档的调用方法来解释fixtures。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  

目录

pytest官方文档fixture调用一、测试函数声明参数传递请求fixture二。fixture中的返回值被传递给测试函数。

 

  

pytest官方文档fixtures调用

 

  既然fixture正在准备测试,那么pytest如何知道fixture应该使用哪些测试函数或者哪些fixture呢?说白了就是固定物的召唤。

  

一、测试函数声明传参请求fixture

 

  该函数通过将fixture声明为一个参数来请求它。

  def test_my_fruit_in_basket(我的水果,水果_basket):

  #这是一个测试函数

  在果篮中断言我的水果

  参考上一章的例子,测试函数test_my_fruit_in_basket通过传入my _ my_fruit,fruit_basket来调用这两个fixture。

  当pytest运行一个测试函数时,它会查看测试函数中的参数,然后搜索与这些参数同名的fixture。一旦pytest找到这些对象,它将运行这些fixture。

  

二、fixture中的返回值传递给测试函数

 

  此外,如果fixture中仍然有返回的内容,pytest可以获取它们,并将它们作为参数传递给测试函数。例如:

  水果类:

  def __init__(self,name):

  self.name=name

  self.cubed=False

  定义立方体(自身):

  self.cubed=True

  水果沙拉类:

  def __init__(self,*fruit_bowl):

  self.fruit=水果碗

  自我。_cube_fruit()

  def _cube_fruit(self):

  自我中的果实

  水果.立方体()

  #排列

  @pytest.fixture

  def水果_碗():

  return[水果(苹果),水果(香蕉)]

  def测试_水果_沙拉(水果_碗):

  #行动

  #此处接收fixture函数fruit_bowl的返回值,

  #即[水果(苹果)、水果(香蕉)],并使用

  水果沙拉=水果沙拉(*水果碗)

  #断言

  # python内置了一个函数all(),用来判断给定的iterable参数iterable中的所有元素是否都为真,

  #如果为真,否则为假。

  断言全部(水果_沙拉.水果中水果的水果.立方)

  Ps:其实在这里你可以写几行很简单的代码来解释意思,但是突然觉得看着稍微有点费解的代码也无妨。

  可能不熟悉python的朋友会觉得官方的例子晦涩难懂。其实我们的重点不是这个,我们要搞清楚这里面的转移关系:

  一、测试函数test_fruit_salad请求fruit_bowl(即def test _ fruit _ salad(fruit _ bowl)3360)。此时,pytest将执行这个fixture函数fruit_bowl,并将返回的对象作为fruit _ bowl参数传递给测试函数test _ fruit _ salad。这就是调用fixture时发生的情况。

  如果上面的fixture函数所做的事情是由我们自己手动执行的,它将看起来像这样:

  #以上两类不变

  .

  def水果_碗():

  return[水果(苹果),水果(香蕉)]

  def测试_水果_沙拉(水果_碗):

  #行动

  水果沙拉=水果沙拉(*水果碗)

  #断言

  断言全部(水果_沙拉.水果中水果的水果.立方)

  #排列

  碗=水果_碗()

  测试_水果_沙拉(水果_碗=碗)

  相信看到这里,你应该已经知道fixture的调用流程了。

  如果你觉得官方的代码例子有点晦涩,那么这里有另一个简单的版本:

  导入pytest

  #排列

  @pytest.fixture

  def水果_碗():

  Return [苹果,香蕉]

  def测试_水果_沙拉(水果_碗):

  #行动

  水果沙拉=水果碗水果碗

  #断言

  断言水果_沙拉==苹果香蕉

  接下来继续按照官方文档来解读fixture的特点:fixture调用其他fixture以及fixture的复用性。

  这就是官方pytest文档如何解释fixtures调用的细节。更多关于官方pytest文档fixtures的调用信息,请关注盛行IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: