如何检查输出是否包含任何列表中所需的元素



我正试图使用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中存在的所有权限是否都存在于该输出中。

我尝试过使用assertInassertEqual和;assertTrue方法,但它在这里似乎不起作用。还有什么我可以寻找的,或者有什么我不知道的方法来解决这类问题吗。

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

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

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

最新更新