如何参数化python unittest setUp方法?

fin*_*pin 8 python unit-testing nosetests

我正在尝试使用不同的setUp方法运行相同的测试用例.我尝试过使用nosetests并参数化,但似乎它不支持参数化setUp方法.这是我正在尝试做的一个例子:

...
from nose_parameterized import parameterized

class Example(unittest.TestCase):

    @parameterized.expand(['device1', 'device2'])
    def setUp(self, device):
        desired_caps = {}
        desired_caps['key1'] = device
        desired_caps['key2'] = 'constant value'

    self.driver = webdriver.Remote(url, desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test_app_launch(self):
        # assert something
Run Code Online (Sandbox Code Playgroud)

错误是:TypeError: setUp() takes exactly 2 arguments (1 given).

有没有其他方法如何参数化setUp方法?我也研究了测鼻仪发生器,但它似乎也没有办法.

Reu*_*ani 1

使用类属性:

class Example(unittest.TestCase):

    # change before running tests
    device = None

    # make sure device is initialized
    def setUpClass(cls):
        if not cls.device:
            raise Exception("Please initialize device before running tests")

    def setUp(self):
        # consider moving to 'setUpClass'
        desired_caps = {}
        desired_caps['key1'] = Example.device
        desired_caps['key2'] = 'constant value'

    self.driver = webdriver.Remote(url, desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test_app_launch(self):
        # assert something
Run Code Online (Sandbox Code Playgroud)

并分别对每个设备运行测试。您的代码建议可以将更多内容移至该setUpClass方法。