python - 如何对unittest测试用例进行排序?
问题描述
我得到了一个类装饰器,可以在 unittest 中自动生成测试用例的编号,这是装饰器:
def generate_test_numbers(test_class):
counter = 1
for method_name in dir(test_class):
if not method_name.startswith('test_n_'):
continue
method = getattr(test_class, method_name)
if not callable(method):
continue
new_method_name = method_name.replace('_n_', '_{:02d}_'.format(counter))
counter += 1
setattr(test_class, new_method_name, method)
delattr(test_class, method_name)
return test_class
我的问题是当我尝试在我的 unittest 文件中运行类装饰器时:
import unittest
from generator import generate_test_numbers
@generate_test_numbers
class TestStringMethods(unittest.TestCase):
def test_n_remove(self):
print("1")
def test_n_add(self):
print("2")
def test_n_c(self):
print("3")
def test_n_d(self):
print("4")
def test_n_e(self):
print("5")
def test_n_f(self):
print("6")
def test_n_g(self):
print("7")
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)
unittest.TextTestRunner(verbosity=2).run(suite)
我希望 test_n_remove 作为第一个测试而不是最后一个:
test_01_add (__main__.TestStringMethods) ... 2
ok
test_02_c (__main__.TestStringMethods) ... 3
ok
test_03_d (__main__.TestStringMethods) ... 4
ok
test_04_e (__main__.TestStringMethods) ... 5
ok
test_05_f (__main__.TestStringMethods) ... 6
ok
test_06_g (__main__.TestStringMethods) ... 7
ok
test_07_remove (__main__.TestStringMethods) ... 1
ok
解决方案
推荐阅读
- php - 不明白为什么我的 php 余弦相似度代码不起作用
- asp.net-core - 是否可以通过命名空间动态创建招摇规范?
- php - PHP 函数中的参数(或参数)如何工作?
- flutter - Flutter Android 应用程序在启动时崩溃,没有错误
- google-apps-script - GoogleSheets 触发器脚本仅在定义的时间之间运行
- node.js - 节点 - 如果一个查询失败,Mysql 事务不会回滚
- python - 将新值从表单添加到 django 中的现有值
- r - 如何删除 R 数据框中的“奇怪空间”?
- perl - 实现调度表
- rxjs - 在每次重试之前和之后发出