从模块运行测试

2 投票
2 回答
593 浏览
提问于 2025-04-15 15:07

我正在尝试在 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 中的所有测试呢?

2 个回答

0

使用Twisted的“trial”测试运行器,你可以不再需要TestSuite.py这个文件,直接在命令行中输入:

$ trial UnitTests.TestConvertStringToNumber

或者更好的是,直接输入

$ trial UnitTests

这样就能找到并运行包里的所有测试。

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

撰写回答