pytest官方文档解读fixtures调用fixtures及fixture复用性_第1页
pytest官方文档解读fixtures调用fixtures及fixture复用性_第2页
pytest官方文档解读fixtures调用fixtures及fixture复用性_第3页
pytest官方文档解读fixtures调用fixtures及fixture复用性_第4页
pytest官方文档解读fixtures调用fixtures及fixture复用性_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第pytest官方文档解读fixtures调用fixtures及fixture复用性目录fixtures调用其他fixtures及fixture复用性一、Fixtures调用别的Fixtures二、Fixtures的复用性

fixtures调用其他fixtures及fixture复用性

pytest最大的优点之一就是它非常灵活。

它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数。

fixtures可以调用别的fixtures正是灵活性的体现之一。

一、Fixtures调用别的Fixtures

直接看一个简单示例:

importpytest

#Arrange

@pytest.fixture

deffirst_entry():

#这是一个fixture函数,返回值:"a"

return"a"

#Arrange

@pytest.fixture

deforder(first_entry):

#这是另一个fixture函数,请求了上一个fixture函数first_entry(),

#并且把first_entry()的返回值,放进了列表[]里,最后返回

return[first_entry]

deftest_string(order):

#Act

#测试函数中请求了第二个fixture函数order,可以拿到返回的[]

order.append("b")

#Assert

assertorder==["a","b"]

可以看到,pytest中的某个fixture请求别的fixture,就像测试函数请求fixture一样,所有的请求规则都适用。

同样,如果这些事情换我们自己来做的话,应该是下面这样子:

deffirst_entry():

return"a"

deforder(first_entry):

return[first_entry]

deftest_string(order):

#Act

order.append("b")

#Assert

assertorder==["a","b"]

entry=first_entry()

the_list=order(first_entry=entry)

test_string(order=the_list)

二、Fixtures的复用性

pytest中的fixtures还可以让我们像使用普通函数一样,能够定义反复重用的通用setup步骤。

两个不同的测试函数可以请求相同的fixture,每个测试函数都会获得该fixture的各自结果。

这样的优点就是,确保不同的测试函数之间不会相互影响。

我们可以使用这种机制来确保每个测试函数都获得各自新的、干净的、一致的数据。

importpytest

#Arrange

@pytest.fixture

deffirst_entry():

return"a"

#Arrange

@pytest.fixture

deforder(first_entry):

return[first_entry]

deftest_string(order):

#Act

order.append("b")

#Assert

assertorder==["a","b"]

deftest_int(order):

#Act

order.append(2)

#Assert

assertorder==["a",2]

从代码可以看出,fixture函数order虽然先后被两个测试函数调用,但是每次被调用给出的结果都是一样的。并不会因为在测试函数test_string中,进行了order.append(b)后,就影响了order在测试函数test_int中的返回值。

同样,这些事情换成我们自己来做,那就是这样的:

deffirst_entry():

return"a"

deforder(first_entry):

return[first_entry]

deftest_string(order):

#Act

order.append("b")

#Assert

assertorder==["a","b"]

deftest_int(order):

#Act

order.append(2)

#Assert

assertorder==["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的特点:一次请求多个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论