fixtures调用其他fixtures怎样做,如何理解fixture复用�
Admin 2022-08-13 群英技术资�
pytest最大的优点之一就是它非常灵活�
它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数�
fixtures可以调用别的fixtures正是灵活性的体现之一�
直接看一个简单示例:
import pytest # Arrange @pytest.fixture def first_entry(): # 这是一个fixture函数,返回�:"a" return "a" # Arrange @pytest.fixture def order(first_entry): # 这是另一个fixture函数,请求了上一个fixture函数first_entry()� # 并且把first_entry()的返回值,放进了列表[]里,最后返� return [first_entry] def test_string(order): # Act # 测试函数中请求了第二个fixture函数order,可以拿到返回的[] order.append("b") # Assert assert order == ["a", "b"]
可以看到,pytest中的某个fixture请求别的fixture,就像测试函数请求fixture一样,所有的请求规则都适用�
同样,如果这些事情换我们自己来做的话,应该是下面这样�:
def first_entry(): return "a" def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] entry = first_entry() the_list = order(first_entry=entry) test_string(order=the_list)
pytest中的fixtures还可以让我们像使用普通函数一样,能够定义反复重用的通用setup步骤�
两个不同的测试函数可以请求相同的fixture,每个测试函数都会获得该fixture的各自结果�
这样的优点就是,确保不同的测试函数之间不会相互影响�
我们可以使用这种机制来确保每个测试函数都获得各自新的、干净的、一致的数据�
import pytest # Arrange @pytest.fixture def first_entry(): return "a" # Arrange @pytest.fixture def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] def test_int(order): # Act order.append(2) # Assert assert order == ["a", 2]
从代码可以看出,fixture函数order
虽然先后被两个测试函数调用,但是每次被调用给出的结果都是一样的。并不会因为在测试函�test_string
中,进行�order.append("b")
后,就影响了order
在测试函�test_int
中的返回值�
同样,这些事情换成我们自己来做,那就是这样的�
def first_entry(): return "a" def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] def test_int(order): # Act order.append(2) # Assert assert order == ["a", 2] entry = first_entry() the_list = order(first_entry=entry) test_string(order=the_list) entry = first_entry() the_list = order(first_entry=entry) test_int(order=the_list)
接下来,继续跟着官方文档解读fixtures的特点:一次请求多个fixtures、fixtures被多次请求�
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�
猜你喜欢
python下如何往数据库批量插入数据?方法是什么?假如我们想要往数据库表中的插入的数据有几百上千条,那么一条条插入,则调用sql语句查询插入就需要执行几百上千,这样花费的时间就非常的长。因此我们可以使用cursor.executemany(sql,args)来实现批量插入数据,那么具体怎样做呢?接着往下看�
删除列表或者字符串元素的方法不止一种,同样,删除字典元素的方法也不止一种,本文主要介绍python中删除字典元素的四种方法�1、使用del语句�2、使用clear()�3、使用pop()�4、使用popitem()。感兴趣的可以了解一�
这篇文章给大家分享如何用python实现验证密码三次的效果的代码,小编觉得挺实用的,验证码验证在很多登录业务都会使用到,因此分享给大家做个参考,接下来一起跟随小编看看吧�
python中删除列表有pop()与remove()两种方法,而且他们都是原位操作。但是他们还是有区别的。pop()是按位进行删除;传递的是待删除元素的index;会返回被删除的值。而remove()是按照值来删除;传递待删除元素,如果多个元素一样,默认删除第一个;不会返回被删除的值�
这篇文章主要介绍了在python中实现导入一个需要传参的模块,具有很好的参考价值,希望可以给大家一个参考,以后在遇到这种的情况的时候,知道如何应对
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所�
增值电信经营许可证 : B1.B2-20140078