2

我正在尝试从我认为是一个模块的 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 中的所有测试?

4

2 回答 2

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
于 2009-10-16T18:02:48.810 回答
0

使用 Twisted 的“试用”测试运行器,您可以摆脱 TestSuite.py,只需执行以下操作:

$ trial UnitTests.TestConvertStringToNumber

在命令行上;或者,更好的是,只是

$ trial UnitTests

发现并运行包中的所有测试。

于 2009-10-16T18:29:46.970 回答