【问题标题】:How to check and see if an output contains the desired elements from any list or not?如何检查并查看输出是否包含任何列表中的所需元素?
【发布时间】:2020-12-06 17:58:08
【问题描述】:

我正在尝试使用 python 的 unittest 库为 django 中的特定应用程序编写测试。

def test_permissions_for_admin(self):
    admin = Group.objects.get(name='Administrator')
    permisisons = admin.permissions.all()
    admin_permissions = ['add_ipaddress', 'change_ipaddress', 'delete_ipaddress', 'view_ipaddress', 'add_subnet', 'change_subnet', 'delete_subnet', 'view_subnet']
    
    for p in permissions:
        print(p.codename)
    
    for p in permissions:
        self.assertIn(p.codename, admin_permissions)

上面的代码打印了这个,输出:

change_emailaddress
delete_emailaddress
view_emailaddress
add_ipaddress
change_ipaddress
delete_ipaddress
view_ipaddress
add_subnet
change_subnet
delete_subnet
view_subnet
view_group
change_organization
change_organizationowner
add_organizationuser
change_organizationuser
delete_organizationuser
view_organizationuser
add_user
change_user
delete_user
view_user

而我要检查的是,变量admin_permissions 中存在的所有权限是否存在于此输出中。

我尝试过使用assertInassertEqualassertTrue 方法,但在这里似乎不起作用。还有什么我可以寻找的或我不知道的任何方法来解决此类问题。

【问题讨论】:

    标签: django unit-testing python-unittest assert django-unittest


    【解决方案1】:

    如果你想检查admin是否拥有所有权限,你需要反过来做,所以:

    perms = list(admin.permissions.values_list('codename', flat=True))
    for p in admin_permissions:
        self.assertIn(p, perms)

    因此,我们在这里检查admin_permissions 中的每个 项,它是perms 的成员:admin.permissionscodenames。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-30
      • 2016-05-12
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多