用另一个python文件中的参数调用selenium测试

时间:2016-05-27 14:27:40

标签: python selenium

我有一个selenium测试,如下所示。我想从另一个python文件中调用此测试,并将其他参数传递给test。

from selenium import webdriver
import unittest, time, re

class Mytest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.verificationErrors = []
        self.accept_next_alert = True

    def my_test(self):
        driver = self.driver

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

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

我看到几个类似的问题,但没有人回答我的确切要求

我知道如何使用参数从命令提示符调用此测试但是我不想使用子进程。

我知道如何从没有参数的另一个python文件调用test。但是我需要传递参数

1 个答案:

答案 0 :(得分:0)

以下是教程,如何使用参数Dynamically generating Python test cases创建TestCase。 这是一个答案,如何从其他文件调用TestCase:Python unittesting: run tests in another module

现在我告诉你我的例子:

我的例子的结构是:

maintest.py
mytest
      |-- __init__.py
      |-- test1.py

<强> test1.py

from selenium import webdriver
import unittest

class MyTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.verificationErrors = []
        self.accept_next_alert = True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

def my_test_generator(a, b):
    def my_test(self):
        print "run test"
        self.assertEqual(a, b, "a != b")
    return my_test

def suite(a, b):
    _suite = unittest.TestSuite()
    test_func = my_test_generator(a, b)
    setattr(MyTest, 'my_test', test_func)
    _suite.addTest(unittest.makeSuite(MyTest, 'my_test'))
    return _suite

函数my_test_generator用于创建带参数的测试函数。您需要创建一个TestSuite来从其他文件中调用它。非常重要:在_suite.addTest(unittest.makeSuite(MyTest, 'my_test')) my_test行中,生成器my_test_generator中的名称相同。因此,您可以使用参数创建TestSuite。你可以从其他文件中调用它来运行你的测试。

<强> maintest.py

import unittest
from mytest import test1


def suite():
    _suite = unittest.TestSuite()
    _suite.addTest(test1.suite(2, 3))

    return _suite

if __name__ == '__main__':
    unittest.main(defaultTest='suite')

您可以通过调用子测试套件来提供参数。