python - 如何使用 pytest 为类范围的固定装置创建工厂?
问题描述
我有一组装置,它们都做同样的事情,打开一个 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 夹具对象。
解决方案
你可以参数化你的fixture函数,这意味着每个测试可以给它一个不同的JSON文件来加载:
import pytest
import os
import json
@pytest.fixture(scope="class")
def json_content(request):
base_path = os.path.abspath(..)
path = os.path.join(base_path, request.param)
with open(path, "r") as fp:
data = json.load(fp)
return data
@pytest.mark.parametrize("json_content", ["abc.json"], indirect=True)
def test_a(json_content):
print(json_content)
@pytest.mark.parametrize("json_content", ["xyz.json"], indirect=True)
def test_b(json_content):
print(json_content)
注意:测试示例没有显示每个类使用相同的夹具,但这不是演示参数化所必需的。
推荐阅读
- java - JHipster:初始化池失败:无法创建与数据库服务器的连接
- node.js - 为什么我在运行 npm install - laravel 5.7 后没有资产文件夹?
- python - 用大数组中的零替换空值或缺失值
- angular - 从 ErrorHandler 导航时错误页面未按预期显示
- docker - docker-compose 部署确保容器安装在特定服务器上
- javascript - 使用 jQuery 颜色填充插件
- android - Android Studio,更改 JDK JRE 路径
- hadoop - 如何将hadoop的awk结果保存到shell脚本中的变量?
- c# - Excel 互操作按日期自动筛选
- python - 为什么这会创建 2 个窗口?