@staticmethod
def filter_test_case(funcs_dict):
funcs = dict()
cases = dict()
for i in funcs_dict:
if i.startswith("test_"):
cases[i] = funcs_dict[i]
else:
funcs[i] = funcs_dict[i]
return funcs, cases
我自己单纯只提供排序的元类,如下,也是有相同的问题,不知道这个怎么处理
class Meta(type):
def __new__(cls, name, parents, attrs):
LONG = 4
id = 1
_attrs = {}
for k, v in attrs.items():
if k.startswith('test_'):
id_str = str(id).zfill(LONG)
_k = k.replace('test_', 'test_{}_'.format(id_str))
_attrs[_k] = v
id += 1
else:
_attrs[k] = v
return type.__new__(cls, name, parents, _attrs)
我搜索unittest 用例排序找到了你的代码,但是我发现一个问题,就是在获取class的函数属性的时候,其实是在从字典里拿数据,字典是无序的,那你拿到的函数根本不是按照添加的顺序排列的,所以你做的重命名也是在对本身顺序错误的列表进行重命名啊,
问题在于这里funcs_dict,这是一个字典,你迭代一个字典,每次的结果都是不一样的,这不是列表
我自己单纯只提供排序的元类,如下,也是有相同的问题,不知道这个怎么处理
attrs.items() 是把一个无序的字典变成的列表,这个列表迭代也无法得到按照函数添加的顺序排序,不知道你是怎么做到可以按照添加的顺序来排序的?反正我看代码没有看出来