设计思路:

获取成员变量class.__dict__.keys()

filter过滤符合要求成员,由于3.x成员dict属性是支持有序的

# coding=utf-8
import unittest
from inspect import isfunction

def raw_members(class_name:object):
"""
get all unsort members test_* name list
eg it also work well :
list(filter(lambda x: not x.startswith("__") and not x.endswith("__")
and x.startswith("test_") ,TestHetero.__dict__.keys()))

"""
return list(filter(lambda x: not x.startswith("__") and not x.endswith("__") and x.startswith("test_")
and isfunction(eval(class_name.__name__+".%s"%x)) and callable(eval(class_name.__name__+".%s"%x )),
class_name.__dict__.keys()))

第二步:
制作suite原始顺序添加的suite:

suite=unittest.TestSuite()

suite.addTests([TestHetero("%s"%value) for value in raw_members(TestHetero)])
print(suite)
unittest.TextTestRunner(verbosity=2).run(suite)

结果验证:并没有按照ascii 0-9 A-Z a-z自动排序而是按自己书写顺序执行,改装结束

<unittest.suite.TestSuite tests=[<__main__.TestHetero testMethod=test_Account>, <__main__.TestHetero testMethod=test_user>, <__main__.TestHetero testMethod=test_001>, <__main__.TestHetero testMethod=test_002>]>
test_Account (__main__.TestHetero) ... ok
Account
user
001
test_user (__main__.TestHetero) ... ok
002
test_001 (__main__.TestHetero) ... ok
test_002 (__main__.TestHetero) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.001s

OK

测试类:

class TestHetero(unittest.TestCase):

    @classmethod
def setUpClass(cls):
pass
@classmethod
def tearDownClass(self):
pass def test_Account(self):
print("Account") def test_user(self):
print("user")
def test_001(self):
# unittest.TestLoader.getTestCaseNames()
print("001")
def test_002(self): print("002")

  

最新文章

  1. eclispe 无法启动调试 cannot connect to VM
  2. C#打开文件对话框
  3. 每天一个linux命令--more/less
  4. 阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑
  5. ftp (文件传输协议)
  6. [Hive - LanguageManual ] Windowing and Analytics Functions (待)
  7. 微信公众号-加解密数据demo坑
  8. Crashing Robots
  9. hadoop笔记之Hive的数据类型
  10. Tomcat 优化和性能监测
  11. java的引用数据类型,你知道吗???
  12. 传统、VHD、VHDX性能对比测试(转帖)
  13. bootstrap4简单使用和入门02-bootstrap的js组件简单使用
  14. sed语法2
  15. android资源文件
  16. 大话DI依赖注入+IOC控制反转(一) 之 定义
  17. 导入mysql报错问题
  18. Maven实战——Gradle,构建工具的未来?
  19. BZOJ3107 CQOI2013二进制A+B(动态规划)
  20. [Node.js] Level 3 new. Steam

热门文章

  1. eclipse中部署项目到tomcat启动,一直是starting状态
  2. TF file
  3. ANDROID开发之问题积累及解决方案(三)
  4. [MongoDB] 使用PHP在MongoDB中搜索的实现
  5. python 多版本环境
  6. day28 rsync服务端配置和客户端
  7. 转载:android audio policy
  8. layer iframe 设置关闭按钮 和刷新和弹出框设置
  9. Big research problems (1)
  10. 8.1.1 IO