Django中的单元测试:使用self.assertIn()在键/值对中查找文本

问题描述 投票:2回答:1

我正在尝试使用self.assertIn()为我的Django应用程序编写单元测试

这是我的单元测试:

    def test_user_get_apps_meta(self):
        myuser = User.objects.get(email='[email protected]')
        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()吗?有没有办法检查某些文本是否是字典中键/值对的值?

python django unit-testing dictionary
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.