聚合来自多个模块的测试用例的最佳方法是什么,以便单个测试运行将全部执行并在 PyDev UnitTest 窗口中显示结果?
问问题
1690 次
2 回答
11
根据您的需要,PyDev 有很多选择:
右键单击一个文件夹并选择'run as > Python unit-test'(将运行目录下的所有模块作为单元测试)。
右键单击多个 Python 模块并选择“运行方式 > Python 单元测试”(将为所有这些模块加载测试并运行它们)。
创建一个导入所有具有不同名称的测试的模块,并为该模块选择“运行方式 > Python 单元测试”。
IE:
from test_mod1 import Test as Test1
from test_mod2 import Test as Test2
于 2012-06-25T10:50:46.480 回答
0
import sys
import unittest
# add here some import paths
sys.path.append(r'..\..')
if True: #__name__ == '__main__':
try:
__file__
except NameError:
path = '.'
else:
path = os.path.split(__file__)[0]
caseset = dict()
def addSuite(suite):
for case in suite:
if isinstance(case, unittest.TestSuite):
addSuite(case)
continue
key = case.id()
if key in caseset:
## print 'in:', type(case).__name__
pass
else:
## print 'new:', type(case).__name__
caseset[key] = case
for filename in os.listdir(path): # could also be os.walk
if filename.startswith('test_'):
filepath = os.path.join(path, filename)
modname, ext = os.path.splitext(filename)
if os.path.isfile(filepath) and ext.lower() in ('py', 'pyw'):
mod = __import__(modname)
else:
try:
mod = __import__(modname)
except ImportError:
ty, er, tb = sys.exc_info()
if tb.tb_next:
traceback.print_exception(ty, er, tb)
continue
cases = unittest.defaultTestLoader.loadTestsFromModule(mod)
addSuite(cases)
l = caseset.values()
suite = unittest.TestSuite(l)
##if __name__ == '__main__':
##unittest.TextTestRunner(verbosity=1).run(suite) # run all tests
此文件导入同一目录中以“test_”开头的所有模块并将它们全部添加到suite
变量中。
suite
应该由 pydev 运行,但我无法测试它 - 我没有 pydev。
于 2012-06-24T20:57:12.510 回答