gpt4 book ai didi

python - 如何使用 Python 和 Pytest 比较和测试字典列表中的特定键

转载 作者:行者123 更新时间:2023-12-01 09:09:21 27 4
gpt4 key购买 nike

我有一个字典项目列表,我想比较字典列表中的特定键。我正在尝试以下代码,它工作正常,但我看到代码重复。无论如何我可以优化代码吗?

我的数据结构如下

[{
"title": "x86_64",
"type": "info",
"list_type": ["2016-9131", "2016-9147", "2016-9444"]

}, {
"title": "x_64",
"type": "info",
"list_type": ["2036-9131", "2026-9147", "2046-9444"],
}
]

下面是Python代码

import json,pytest

with open('expected_resuts.json') as expected_result:
expected_results=json.load(expected_result)

with open('actual_results.json') as actual_result:
actual_results=json.load(actual_result)

expected_title_list=[]
expected_title_list=[]
expected_name=[]
actual_name=[]

for item in expected_results:
expected_title_list.append(item['title'])

for item in actual_results:
expected_title_list.append(item['title'])

for item in expected_results:
expected_name.append(item['type'])

for item in actual_results:
actual_name.append(item['type'])


def test_title_list():
assert expected_title_list==expected_title_list

def test_name():
assert actual_name==expected_name

最佳答案

仅通过使用列表推导式就可以大大改进它。您还可以在需要它的测试中移动诸如 expected_vpk_list 之类的变量(以避免创建太多全局变量)。下面的例子:

import json, pytest

with open('expected_results.json') as expected_result:
expected_results = json.load(expected_result)

with open('actual_results.json') as actual_result:
actual_results = json.load(actual_result)

def test_vpk_list():
expected_vpk_list = [result['vpk'] for result in expected_results]
actual_vpk_list = [result['vpk'] for result in actual_results]
assert actual_vpk_list == expected_vpk_list

def test_patch_title():
expected_patch_title = [result['patchTitle'] for result in expected_results]
actual_patch_title = [result['patchTitle'] for result in actual_results]
assert actual_patch_title == expected_patch_title
<小时/>

更新:可以使用 parametrize 合并这些测试如下图:

@pytest.mark.parametrize('key', [
'vpk',
'patchTitle',
])
def test_key_from_results(key):
expected_values = [result[key] for result in expected_results]
actual_values = [result[key] for result in actual_results]
assert expected_values == actual_values

关于python - 如何使用 Python 和 Pytest 比较和测试字典列表中的特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51797134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com