文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

pytest中fixtures调用fixtures及fixture复用性实例分析

2023-06-30 18:21

关注

本篇内容介绍了“pytest中fixtures调用fixtures及fixture复用性实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

fixtures调用其他fixtures及fixture复用性 

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

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

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

一、Fixtures调用别的Fixtures

直接看一个简单示例:

import pytest# Arrange@pytest.fixturedef first_entry():    # 这是一个fixture函数,返回值:"a"    return "a"# Arrange@pytest.fixturedef 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)

二、Fixtures的复用性

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

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

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

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

import pytest# Arrange@pytest.fixturedef first_entry():    return "a"# Arrange@pytest.fixturedef 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被多次请求。

“pytest中fixtures调用fixtures及fixture复用性实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯