【发布时间】:2019-10-24 16:32:32
【问题描述】:
我有一组夹具,它们都做同样的事情,打开一个 json 文件并使其可用于测试类。
@pytest.fixture(scope="class")
def category_params(request):
base_path = os.path.abspath(..)
path = os.path.join(base_path, "data/category_params.json")
with open(path, "r") as fp:
category_params = json.load(f)
return category_params
我为测试域中的所有不同测试类别重复此设置。这似乎是我应该为它编写一个函数的东西,但我不确定如何使用 pytest 来完成它。我相信我应该问如何制作夹具工厂,即制作其他夹具对象的 pytest 夹具对象。
【问题讨论】:
-
为什么不能创建一个函数并从每个夹具调用它?它会工作得很好。也可以尝试制作夹具工厂;我不记得这样做了,但它也应该可以工作。
-
我想将代码量保持在最低限度,并制作一个函数并从每个夹具调用它会增加一点。我想使用夹具工厂,但不确定如何实现。
-
您的意思是指单个夹具函数会加载不同的 JSON 文件吗?
-
每个测试类都需要不同的 JSON 文件。我不知道这是否意味着为每个类创建一个单独的夹具,或者只是调用一个夹具函数来加载该类的参数。