我将使用什么断言来验证字典列表是否包含特定值

What assertion would I use for validating a list of dictionaries contains a specific value

我是单元测试的新手,仍然了解它是如何工作的。如果我有字典列表...例如:

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

当 "y" = "yval" 时,我会执行哪种 assertion/test 来验证 "v" 的值是 "y1val"?也可能是列表中不存在字典y:yval

没有可以直接测试它的单元测试断言,但您可以使用循环。

# 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']])

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

>>>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 voluptuous