1

同じものを販売しているいくつかのサイトをテストする必要がありますが、別のテンプレートがあります.

したがって、いくつかの入力パラメーターを指定して各 MainTestClass を実行したいとします。

Java -jar SeleniumServerStandalone-2.0b2.jar -ポート 5555 (template_id=5)

出来ますか?

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

        #self.template_id=template_id I want something like that
        self.verificationErrors = []

        self.selenium = selenium("localhost", 5555, "*chrome", "http://www.google.com/")
        time.sleep(5)
        self.selenium.start()


    def test_test1(self):
        if self.template_id==1:
        ...
        elif self.template_id==2:
        ...
    def test_test2(self):
        if self.template_id==1:
        ...
        elif self.template_id==2:
        ...
    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

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

2 に答える 2

1

次のように、 initメソッドを MainTestCases に追加してみてください。

class MainTestCases(unittest.TestCase):

    def __init__(self, methodName, template_id):
        super(MainTestCases, self).__init__(self, methodName)
        self.template_id = templateId

    def setUp(self):
        ... and so on...

このカスタマイズにより、テスト スイートを手動でビルドする必要があります。これは、各テスト ケースを template_id でインスタンス化する必要があるためです。

def suite(template_id):
    testcasenames = unittest.defaultTestLoader.loadTestsFromTestCase(MainTestCases)
    suite = []
    for case in testcasename:
        suite.append(MainTestCases(case, template_id)
    return suite

次に、unittest.main() の代わりにmainで、次のようにします。

  1. コマンドライン引数を解析します。argparse (2.7+) または optparse (2.6 以前) モジュールを検討することをお勧めします。それらは強力ですが、例を見ることで簡単に始めることができます。
  2. スイートを作成して実行します: unittest.TextTestRunner().run(suite(template_id))
于 2011-03-23T02:24:42.457 に答える
0

今、私はこの解決策を使用します:

  1. テストケースを実行するスイート テストを作成します。

FlightTemplate から unittest をインポートします FlightTemplate をインポートします

デフスイート():

    testSuite= unittest.TestSuite()
    testSuite.addTest(FlightsTestCases('test_test1'))


    FlightsTestCases.www_address='http://testpage.pl/'
    FlightsTestCases.flight_template=FlightTemplate.Test

    #FlightsTestCases.www_address='http://productionpage.pl/'
    #FlightsTestCases.flight_template=FlightTemplate.Production

    return testSuite


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

set_up を次のように変更します。

class FlightTestCases(unittest.TestCase): www_address = なし flight_template = なし xml_report_generator = なし

def setUp(self):
    self.verificationErrors = []
    if self.www_address == None:
        self.selenium = selenium("localhost", 5555, "*chrome", "http://testpage.pl/")
    else:
        self.selenium = selenium("localhost", 5555, "*chrome", self.www_address)
于 2011-06-02T14:15:17.840 に答える