【pytest】工厂化的fixtures

  • 前言:在一个测试用例中需要多次调用同一个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 结果分析
    • 通过上述示例,我们不光创建了工厂,还对数据进行了管理,当然,不一定是数据也可以是其它的操作,这样做之后,不管里面是什么,我们都能有效地进行管理。
posted @ 2022-08-22 22:18  Tony_xiao  阅读(144)  评论(0编辑  收藏  举报