Skip to main content
 首页 » 编程设计

python之Django : using self. assertIn() 中的单元测试以查找键/值对中的文本

2024年09月07日40zhenyulu

我正在尝试使用 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)