正常情况执行用例都是按照test_01_,test_02_…test_10_*顺序来执行,但是使用HTMLTestRunner报告模块的时候发现一个bug,模板来自网络。
进入HTMLTestRunner.py查看源码:
def sortResult(self, result_list):
# unittest does not seems to run in any particular order.
# Here at least we want to group them together by class.
rmap = {}
classes = []
for n, t, o, e in result_list:
cls = t.__class__
if not cls in rmap:
rmap[cls] = []
classes.append(cls)
rmap[cls].append((n, t, o, e))
for cls in classes:
rmap[cls].sort(key=cmp_to_key(lambda a,b:1 if a[1].id()>b[1].id() else ( 1 if a[1].id()==b[1].id() else -1)))
r = [(cls, rmap[cls]) for cls in classes]
# name = t.id().split('.')[-1]
r.sort(key=cmp_to_key(lambda a, b: 1 if a[0].__name__ > b[0].__name__ else -1))
return r
其中代码
for cls in classes:
rmap[cls].sort(key=cmp_to_key(lambda a,b:1 if a[1].id()>b[1].id() else ( 1 if a[1].id()==b[1].id() else -1)))
r = [(cls, rmap[cls]) for cls in classes]
# name = t.id().split('.')[-1]
r.sort(key=cmp_to_key(lambda a, b: 1 if a[0].__name__ > b[0].__name__ else -1))
这串代码写结果列表,是有问题的,需要注释。
保存后,再执行run.alltest,查看报告文件:
顺序正常。