我试图在我认为是模块的python中运行一些单元测试。我有一个像
这样的目录结构TestSuite.py
UnitTests
|__init__.py
|TestConvertStringToNumber.py
在testsuite.py中我有
import unittest
import UnitTests
class TestSuite:
def __init__(self):
pass
print "Starting testting"
suite = unittest.TestLoader().loadTestsFromModule(UnitTests)
unittest.TextTestRunner(verbosity=1).run(suite)
看起来可以开始测试,但是它没有接受TestConvertNumberToString.py中的任何测试。在那个课程中,我有一组以'test'开头的函数。
我应该怎么做才能运行python TestSuite.py实际启动我在UnitTests中的所有测试?
答案 0 :(得分:4)
以下是一些将在目录中运行所有单元测试的代码:
#!/usr/bin/env python
import unittest
import sys
import os
unit_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
os.chdir(unit_dir)
suite = unittest.TestSuite()
for filename in os.listdir('.'):
if filename.endswith('.py') and filename.startswith('test_'):
modname = filename[:-2]
module = __import__(modname)
suite.addTest(unittest.TestLoader().loadTestsFromModule(module))
unittest.TextTestRunner(verbosity=2).run(suite)
如果你将它命名为testsuite.py,那么你可以像这样运行它:
testsuite.py UnitTests
答案 1 :(得分:0)
使用Twisted的“试用”测试运行器,你可以摆脱TestSuite.py,只需这样做:
$ trial UnitTests.TestConvertStringToNumber
在命令行上;或者,更好的是,只是
$ trial UnitTests
发现并运行包中的所有测试。