我正在尝试使用 self.assertIn() 为我的 Django 应用编写单元测试
这是我的单元测试:
def test_user_get_apps_meta(self):
myuser = User.objects.get(email='theemail@gmail.com')
tagline = 'the text'
self.assertIn(tagline, myuser.get_apps())
myuser.get_apps() 的结果是一个字典列表。在其中一本词典中确实是我正在寻找的 tagline 文本:'the text'
但是我在运行测试时遇到错误:
self.assertIn(tagline, myuser.get_apps())
AssertionError: 'the text' not found in [{'logo_app_alt': 'the text', '...},{},{}]
我没有正确使用 self.assertIn() 吗?有没有办法检查某些文本是否是字典中键/值对的值?
请您参考如下方法:
如您所见,self.assertIn(tagline, taglines) 仅在 taglines 包含实际字符串时才有效。如果它包含一个以字符串作为值的字典,它将不起作用。
您可以使用列表理解从字典中提取值,并将其传递给 self.assertIn:
expected_tagline = 'the text'
taglines = [d['logo_app_alt'] for d in myuser.get_apps()]
self.assertIn(expected_tagline, taglines)
