テストスイートで一緒に実行したい2つのテストケース(2つの異なるファイル)があります。 python "normally"を実行するだけでテストを実行できますが、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()
この作業を正しく行うにはどうすればよいですか?
あなたはテストスーツを使いたいです。したがって、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)
ローダーとスイートを作成するためのすべてのコードは不要です。テストは、お気に入りのテストランナーを使用したテストディスカバリで実行できるように作成する必要があります。つまり、メソッドに標準的な方法で名前を付け、それらをインポート可能な場所に配置するか(またはそれらを含むフォルダーをランナーに渡す)、unittest.TestCase
から継承します。それが終わったら、python -m unittest discover
を最も簡単な、またはより優れたサードパーティランナーで使用して、テストを検出して実行できます。
TestCase
sを手動で収集しようとしている場合、これは役に立ちます:unittest.loader.findTestCases()
:
# Given a module, M, with tests:
mySuite = unittest.loader.findTestCases(M)
runner = unittest.TextTestRunner()
runner.run(mySuit)
2つのテストを統合するモジュールに対してpython-unit testを実行することについて言及していると思います。つまり、そのモジュールのテストケースを作成すると機能します。サブクラス化unittest.TestCase
そして、単語「テスト」で始まる簡単なテストを持っています。
例
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()