使用 pytest 断言值是否存在于 json 数组的任何位置

Assert if value is present in any position of json array using pytest

我有一个 json 数组,如下所示:

{
   "employees":[
      {
         "name":"Shyam",
         "email":"shyamjaiswal@gmail.com"
      },
      {
         "name":"Bob",
         "email":"bob32@gmail.com"
      },
      {
         "name":"Jai",
         "email":"jai87@gmail.com"
      }
   ]
}

当我确定值 'Bob' 会出现在某个位置(例如位置 2)时,我可以使用 :
断言 assert json.loads(data)["employees"][2] == "Bob"

但是,在我的例子中,值 'Bob' 可以在数组的任何位置。在这种情况下,如果键 'name' 和值 'Bob' 出现在 json 数组

的任何位置,我该如何断言

您可以在 any 中对 employees 使用循环来执行此检查。

contents = json.loads(data)
assert any(i['name'] == 'Bob' for i in contents['employees'])