【问题标题】:How to input parameters into Selenium RC TestSuite?如何将参数输入到 Selenium RC TestSuite?
【发布时间】:2011-07-15 03:00:55
【问题描述】:

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

所以我想运行每个 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()

【问题讨论】:

标签: python selenium selenium-rc testcase


【解决方案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

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

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

【讨论】:

    【解决方案2】:

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

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

    导入单元测试 从 Flight.FlightsTestCases 导入 FlightTestCases 导入系统 从 Flight.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 = 无 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)
    

    【讨论】:

    • 这个答案需要格式化,但我找不到如何编辑它:/
    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多