unittest 改装框架ascii 排序执行用例,按照自己书写先后顺序执行
设计思路:
获取成员变量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")
最新文章
- eclispe 无法启动调试 cannot connect to VM
- C#打开文件对话框
- 每天一个linux命令--more/less
- 阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑
- ftp (文件传输协议)
- [Hive - LanguageManual ] Windowing and Analytics Functions (待)
- 微信公众号-加解密数据demo坑
- Crashing Robots
- hadoop笔记之Hive的数据类型
- Tomcat 优化和性能监测
- java的引用数据类型,你知道吗???
- 传统、VHD、VHDX性能对比测试(转帖)
- bootstrap4简单使用和入门02-bootstrap的js组件简单使用
- sed语法2
- android资源文件
- 大话DI依赖注入+IOC控制反转(一) 之 定义
- 导入mysql报错问题
- Maven实战——Gradle,构建工具的未来?
- BZOJ3107 CQOI2013二进制A+B(动态规划)
- [Node.js] Level 3 new. Steam