django - 如何检查并查看输出是否包含任何列表中的所需元素?
问题描述
我正在尝试使用 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
中存在的所有权限是否存在于此输出中。
我曾尝试使用assertIn
, assertEqual
, &assertTrue
方法,但它似乎在这里不起作用。还有什么我可以寻找的或我不知道的任何方法来解决此类问题。
解决方案
如果要检查是否admin
具有所有权限,则需要以相反的方式执行此操作,因此:
perms = list(admin.permissions.values_list('codename', flat=True))
for p in admin_permissions:
self.assertIn(p, perms)
因此,我们在这里检查对于 中的每个项目admin_permissions
,它是 的成员perms
:的codename
s 。.permissions
admin
推荐阅读
- java - Hibernate ManyToMany realation
- android - How can I orderByChild on Android Firebase chat based application?
- python-3.x - 计算numpy数组中两点之间的规范距离
- c++ - 如何在 CMake 中“覆盖”文件的扩展类型
- java - How can i remove an element from array in Java
- go - 无法构建具有外部模块本地副本的项目
- regex - How to grep only the desired position match in a single line, where there is multiple matches, using regex?
- log4j - Is there a log4j appender for Moogsoft?
- javascript - Create directory recursively if it does not exist?
- python-3.x - Scrapy shell
is running all of the spiders in my 'spiders' folder