我正在尝试使用self.assertIn()
这是我的单元测试:
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()
吗?有没有办法检查某些文本是否是字典中键/值对的值?
答案 0 :(得分:2)
如您所见,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)