5

一緒に実行するために既に作成した他のスーツケースとテストケースで構成される大きなpythonスイートケースを作成する必要があります。

どうすればいいですか?

たとえば、ここに追加したいスイートケース (suiteFilter.py) があります。

import testFilter1
import testFilter2
import unittest
import sys

def suite():
    return unittest.TestSuite((\
        unittest.makeSuite(testFilter1.TestFilter1),
        unittest.makeSuite(testFilter2.TestFilter2),
        ))


if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

そしてテストケース構造 (Invoice.py):

from selenium import selenium
import unittest, time, re
from setup_tests import filename, fileForNrTest, username, password, server_url
fileW=open(filename,'a')


class TestInvoice(unittest.TestCase):

    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*firefox", server_url)
        self.selenium.start()

    def test_invoice(self):
        sel = self.selenium
        [...] 

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)


    if __name__ == "__main__":
        unittest.main()

ありがとうございました!

4

1 に答える 1

12

プログラム/テストケースとスイートの構造などの追加情報を提供できます。私が行う方法は、モジュールごとに suite() を定義することです。したがって、 UserServiceTest モジュールについて次のように述べています。

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

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

次に、各パッケージのメイン テストがあります。

def suite():
"""
    Gather all the tests from this package in a test suite.
"""
    test_suite = unittest.TestSuite()
    test_suite.addTest(file_tests_main.suite())
    test_suite.addTest(userservice_test.suite())
    return test_suite


if __name__ == "__main__":
    #So you can run tests from this package individually.
    TEST_RUNNER = unittest.TextTestRunner()
    TEST_SUITE = suite()
    TEST_RUNNER.run(TEST_SUITE)

プロジェクトのルートまで、これを再帰的に行うことができます。したがって、パッケージ A のメイン テストは、パッケージ A 内のすべてのモジュール + パッケージ A のサブパッケージからのメイン テストなどを収集します。unittest追加の詳細を提供しなかったため、使用していると想定していましたが、この構造は他の python テスト フレームワークにも適用できると思います。


編集:あなたの問題を完全に理解しているかどうかはよくわかりませんが、私が理解できることから、suitFilter.py で定義されたスイートと Invoice.py で定義されたテストケースの両方を同じスイートに追加したいですか? もしそうなら、例えばmainTest.pyでやってみませんか:

import unittest
import suiteFilter
import Invoice


def suite()
    test_suite = unittest.TestSuite()
    test_suite.addTest(suiteFilter.suite())
    test_suite.addTest(unittest.makeSuite(Invoice))


if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

テストとスイートをすべて同じように test_suite に追加できます。

于 2011-08-09T09:15:59.097 に答える