pytest中fixture,
本文主要介绍pytest的官方解读,一次请求多个夹具,多次请求夹具。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010 1.一个测试功能/夹具一次请求多个夹具。2.每个测试函数可以多次请求fixtures(返回值被缓存)。跟随节奏探索夹具的灵活性。
目录
在测试功能和夹具功能中,每个请求不限于一个夹具。他们想要多少就有多少。
下面是另一个简单的例子3360。
导入pytest
#排列
@pytest.fixture
定义first_entry():
返回“a”
#排列
@pytest.fixture
def second_entry():
返回2
#排列
@pytest.fixture
定义订单(第一条目,第二条目):
#这是一个固定功能,还需要另外两个固定功能
return[第一个条目,第二个条目]
#排列
@pytest.fixture
def期望_列表():
return [a ,2,3.0]
定义测试字符串(顺序,预期列表):
#这是一个要求2个不同夹具功能的测试功能。
#行动
订单.追加(3.0)
#断言
断言顺序==预期列表
可以看出,在fixture函数顺序中,请求了另外两个fixture函数,即:first_entry和second_entry。
在测试函数test_string中,请求了两个不同的fixture函数:order和expected_list。
一、一个测试函数/fixture一次请求多个fixture
在同一个测试功能中,也可以多次请求夹具。但是,在这个测试函数中,pytest在第一次执行后不会再次执行fixture函数。
如果fixture函数的第一次执行有返回值,返回值将被缓存。
导入pytest
#排列
@pytest.fixture
定义first_entry():
返回“a”
#排列
@pytest.fixture
定义订单():
return []
#行动
@pytest.fixture
定义append_first(order,first_entry):
#第一次请求订单,返回一个列表[]
#然后order的空列表加上first_entry的返回值,order就变成[a],缓存起来。
退货单.追加(first_entry)
def test _ string _ only(append _ first,order,first_entry):
#在测试函数中,第二次请求order,但没有得到空列表[],得到缓存的[a]。
#所以order==[first_entry]的断言其实是[a]==[a],测试通过。
#断言
断言顺序==[first_entry]
从例子中可以看出:
在fixture函数append_first中,第一次请求订单,返回并缓存一个list []。然后order.append(first_entry)在[]中加上first_entry的返回值,所以此时的顺序就变成[a]。最后,在测试函数test_string_only中,第二次请求order,但是没有得到空list [],得到的是缓存的[a]。这样,最终断言assert order==[first_entry]就会成功。相反,如果在测试函数中每次都请求相同的fixture,那么上面的测试函数将会失败。
因为,这样一来,虽然append_first中的返回值仍然是[a],但是在test_string_only中,重新请求的是顺序,实际得到的是空列表[],所以最终断言会失败。
以上是pytest对多夹具多请求的解读细节。有关pytest对fixtures请求的解释的更多信息,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。