【发布时间】:2019-09-18 06:56:41
【问题描述】:
对于文件 test_data.json,我想在 python 中创建测试迭代。此文件中的数据仅包括要传递给特定方法的各个值。同时,断言部分单独处理(这里不需要json文件数据)。
所以为了使用静态数据创建这些,我实现了 @pytest.mark.parameterized 如下。此实现运行良好,因为它创建了 5 次测试迭代,分别为 1、2、3、4、5,并且执行过程中没有任何错误:-
import pytest
@pytest.mark.parametrize('key_value',
[
'1',
'2',
'3',
'4',
'5',
]
)
def test_method(key_value):
go_to_key(key_value)
现在,鉴于我正在使用的 json 文件中的数据将被实时提取,并且可能会不时变化。所以我需要使用参数化的方式来读取json文件,然后根据被拉入的key_values构建测试迭代。
文件名 = test_data.json
test_data.json中的json数据如下
[
{
"key": "1"
},
{
"key": "2"
},
{
"key": "3"
},
{
"key": "4"
},
{
"key": "5"
}
]
在使用参数化时,我遇到了以下 sn-p,但它仍然没有为测试迭代提供任何明确的实现:-
@parameterized(
param.explicit(*json.loads(line))
for line in open("testcases.jsons")
)
def test_from_json_file(...):
...
有人可以在上面提到的代码上下文中查看并分享任何关于使用 json 文件创建测试迭代的建议吗?谢谢!
【问题讨论】:
标签: python json pytest parameterized