37

テスト スイートで一緒に実行したい 2 つのテスト ケース (2 つの異なるファイル) があります。pythonを「通常どおり」実行するだけでテストを実行できますが、python-unitテストの実行を選択すると、0個のテストが実行されます。現在、少なくとも 1 つのテストを正しく実行しようとしています。

import usertest
import configtest # first test
import unittest   # second test

testSuite = unittest.TestSuite()
testResult = unittest.TestResult()
confTest = configtest.ConfigTestCase()
testSuite.addTest(configtest.suite())
test = testSuite.run(testResult)
print testResult.testsRun # prints 1 if run "normally"

これが私のテストケース設定の例です

class ConfigTestCase(unittest.TestCase):
    def setUp(self):

        ##set up code

    def runTest(self):

        #runs test


def suite():
    """
        Gather all the tests from this module in a test suite.
    """
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(ConfigTestCase))
    return test_suite

if __name__ == "__main__":
    #So you can run tests from this module individually.
    unittest.main()

この作業を正しく行うにはどうすればよいですか?

4

4 に答える 4

54

あなたはテストスーツを使いたいです。したがって、unittest.main() を呼び出す必要はありません。テストスーツの使用は次のようにする必要があります。

#import usertest
#import configtest # first test
import unittest   # second test

class ConfigTestCase(unittest.TestCase):
    def setUp(self):
        print 'stp'
        ##set up code

    def runTest(self):
        #runs test
        print 'stp'

def suite():
    """
        Gather all the tests from this module in a test suite.
    """
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(ConfigTestCase))
    return test_suite

mySuit=suite()

runner=unittest.TextTestRunner()
runner.run(mySuit)
于 2012-08-17T18:46:59.007 に答える
8

ローダーとスイートを作成するためのコードはすべて不要です。お気に入りのテスト ランナーを使用してテスト ディスカバリーを介して実行できるように、テストを作成する必要があります。つまり、標準的な方法でメソッドに名前を付け、それらをインポート可能な場所に置き (またはそれらを含むフォルダーをランナーに渡し) unittest.TestCase、. それが完了したらpython -m unittest discover、最も単純な、またはより優れたサードパーティのランナーを使用して、テストを検出して実行できます。

于 2012-08-17T18:44:30.963 に答える
1

2 つのテストを統合するモジュールに対して python-unit テストを実行することについて言及していると思います。そのモジュールのテストケースを作成すると機能します。サブクラスunittest.TestCase化して、「test」という単語で始まる簡単なテストを作成します。

例えば

class testall(unittest.TestCase):

    def test_all(self):           
        testSuite = unittest.TestSuite()
        testResult = unittest.TestResult()
        confTest = configtest.ConfigTestCase()
        testSuite.addTest(configtest.suite())
        test = testSuite.run(testResult)
        print testResult.testsRun # prints 1 if run "normally"

if __name__ == "__main__": 
      unittest.main()
于 2012-08-17T19:20:12.763 に答える