我应该使用什么论断来验证一个字典列表包含特定的值

2024-09-27 21:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我对unittest还不熟悉,而且仍然了解事物是如何工作的。如果我有一个字典列表…例如:

mylist = [{"y": "xval", "v": "x1val"}, 
          {"y": "yval", "v": "y1val"},
          {"y": "zval", "v": "z1val"}]

当“y”=“yval”时,我将执行什么样的断言/测试来验证“v”的值是“y1val”?字典y:yval也可能不在列表中。你知道吗


Tags: 列表字典断言unittest事物mylistzvalxval
2条回答

您可以尝试一些架构验证模块来验证您的结构:

>>>from voluptuous import Schema

>>>Schema([{'y':str, 'v':str}])
>>> s([{"y": "xval", "v": "x1val"}, 
          {"y": "yval", "v": "y1val"},
          {"y": "zval", "v": "z1val"}])
[{'y': 'xval', 'v': 'x1val'}, {'y': 'yval', 'v': 'y1val'}, {'y': 'zval', 'v': 'z1val'}]

要安装此模块,可以使用:pip install volupturous

没有unittest断言可以直接测试它,但是可以使用循环。你知道吗

# This is inside a TestCase method
for d in mylist:
    if d['y'] == 'yval':
        self.assertEqual(d['v'], 'y1val')

这可以概括为将每个'y'条目与允许的'v'条目相关联。你知道吗

expected= {
    'xval': 'x1val',
    'yval': 'y1val',
    'zval': 'z1val'
}

# This is in a TestCase method
for d in mylist:
    self.assertEqual(d['v'], expected[d['y']])

相关问题 更多 >

    热门问题