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 に答える