记一个特殊的assertEqual失败问题:原因:values_list返回的是set类型而不是list类型
在单元测试中 用assertequal比较 返回的结果字典 和 预定义的结果字典,看起来明明是相等的,手工用python命令行 复制对比 也是相等的
但是assertEqual 却一直失败
最后发现原因,结果字典的组成部分中 用到了values_list查询,这个返回的类型是QuerySet
def _get_name_list(self, name_input):
names = PersonModel.objects.values_list("name", flat=True).filter(name=name_input)
return names
而我预定义的字典中类型是list,所以不等
改为:
return list(names) 后,即可成功
注意:assertequal 可以根据比较的数据类型自行选择比较,可以比较两个无序字典,不需要改为assertItemsequal(这种方式不能对具体value值做比较,不准确)