[英]Unit Test Cases for Django Admin.py operations
这是我的第一个Django项目。 在我的admin.py文件中,我定义了字段和search_fields。 我想知道如何编写测试用例来验证它们。
程式码片段:
class CategoryAdmin(admin.ModelAdmin):
fields = ['name']
search_fields = ['name']
这些东西是否需要单元测试用例?
我经常弄乱search_fields,list_display等中的名称。我将以下测试用例放在一起,作为我的第一个验证尝试。 当我在寻找Stack Overflow以获得更好或更完整的解决方案时遇到了您的问题,并且由于您的问题没有任何答案,所以我不妨将代码放到这里。
model_classnames = ['MyModelX', 'MyModelY', 'MyModelZ']
admin_fieldname_lists = ['list_display', 'search_fields']
class TestAdminConfig(TestCase):
def test_admin_fieldname_lists(self):
for model_classname in model_classnames:
model_class = locate("tasks.models.%s" % model_classname)
admin_class = locate("tasks.admin.%sAdmin" % model_classname)
#print("classes: %s, %s" % (model_class.__name__, admin_class.__name__))
for list_name in admin_fieldname_lists:
#print(" list: %s" % list_name)
for fieldname in getattr(admin_class, list_name):
fieldname = fieldname.replace("^", "")
#print(" field: %s" % fieldname)
if fieldname in dir(model_class): continue
if fieldname in dir(admin_class): continue
model_class.objects.filter(**{fieldname:None})
简而言之,这会遍历所有模型/字段名称组合,并确定是否可以在Model类,相应的ModelAdmin类上找到任何给定的“ fieldname”,或者是更复杂的字符串(如“ foo__auth_user__first_name”)起作用作为过滤器。 该代码删除了有时会在search_fields前面加上前缀的“ ^”字符。
由于您的问题很旧,您最终找到了自己的解决方案吗? 如果这样,那是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.