1

我必须测试几个销售相同产品的网站,但他们有另一个模板。

所以我想运行每个 MainTestClass 并提供一些输入参数,比如说:

java -jar SeleniumServerStandalone-2.0b2.jar -port 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

尝试向MainTestCases添加一个init方法,如下所示:

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

然后在main中,而不是 unittest.main(),执行:

  1. 解析命令行参数。您可能需要考虑 argparse(2.7+)或 optparse(2.6 及更早版本)模块。它们功能强大,但通过查看示例很容易开始。
  2. 创建并运行套件: unittest.TextTestRunner().run(suite(template_id))
于 2011-03-23T02:24:42.457 回答
0

现在,我使用这个解决方案:

  1. 创建运行测试用例的套件测试:

从Flights.FlightsTestCases 导入unittest 导入FlightsTestCases 从Flights.FlightTemplate 导入系统导入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 更改为:

类 FlightTestCases(unittest.TestCase): www_address = None flight_template = None xml_report_generator = None

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 回答