ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【pytest】工厂化的fixtures

2022-08-22 22:33:04  阅读:173  来源: 互联网

标签:name get fixture 工厂化 pytest print fixtures data def


  • 前言:在一个测试用例中需要多次调用同一个fixture的时候,工厂化的 fixture 的模式对于一个 fixture 在单一的测试中需要被多次调用非常有用。
    之前写fixture是直接return一个数据,在测试用例中可以直接使用,现在我们需要返回一个生成数据的函数,这样就能在用例中多次调用了。

  • Factories as fixtures

    • “Factories as fixtures”模式可以帮助在一次测试中多次需要一个fixture的结果的情况下。
    • fixture不是直接返回数据,而是返回一个生成数据的函数。然后可以在测试中多次调用此函数。
  • 1、创建fixture工厂

    • 1.1 提供一个fixture工厂,可以在单个测试中多次需要夹具结果的情况下提供帮助.夹具不是直接放回数据,而是返回一个生产数据的函数.然后可以在测试中多次调用此函数。
    • 1.2 示例代码
import pytest

@pytest.fixture()
def get_data():
    def fixtrue_factory(name):
        return {"name":name,"orders":[]}

    return fixtrue_factory

def test_demo(get_data):
    print(get_data("zhangsan"))
    print(get_data("lisi"))
    print(get_data("wangwu"))
  • 1.3 运行结果

  • 1.4 结果分析

    • 通过上述示例,咱们可以看到,我们创建了fixture,但返回的不是数据,而是一个函数,这样我们根据传入的参数不同,返回不同的数据,从而形成我们想要的工厂
  • 2、工厂进阶-管理工厂的数据

    • 2.1 示例代码
import pytest

@pytest.fixture()
def get_data():
    data_mange = []

    def fixture_fac(name):
        data_mange.append(name)
        print("创建数据:",name)

    yield fixture_fac
    print(data_mange)

def test_demo1(get_data):
    print(get_data("zhangsan"))
    print(get_data("lisi"))
    print(get_data("wangwu"))
  • 2.2 结果分析
    • 通过上述示例,我们不光创建了工厂,还对数据进行了管理,当然,不一定是数据也可以是其它的操作,这样做之后,不管里面是什么,我们都能有效地进行管理。

标签:name,get,fixture,工厂化,pytest,print,fixtures,data,def
来源: https://www.cnblogs.com/xwltest/p/16614471.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有