1

I'm using nose_parametrized package in my project and @parametrized.expand decorator on class level. But I don't know how to use a parameter for my setUp class. Code looks like that:

from nose_parameterized import parameterized    

@parameterized.expand(['par1', 'par2'])
class MyTestClass(TestCase):

    def setUp(self, par):
        super(TestCase, self).setUp()

        if par == "par1":
            do_something()
        elif par == "par2":
            do_something_else()

        do_more(par)

Such approach cause TypeError: setUp() takes exactly 2 arguments (1 given)

What is the correct approach?

Malvinka
  • 1,185
  • 1
  • 15
  • 36

1 Answers1

0

Use parameterized_class:

from parameterized import parameterized_class

@parameterized_class(('par', ), ['par1', 'par2'])
class MyTestClass(TestCase):
    def setUp(self):
        super(TestCase, self).setUp()

        if self.par == "par1":
            do_something()
        elif self.par == "par2":
            do_something_else()

        do_more(self.par)
Dipen Dadhaniya
  • 4,550
  • 2
  • 16
  • 24
  • Could be. But that causes strange error ` File "/usr/lib/python2.7/unittest/case.py", line 320, in run self.setUp() TypeError: 'NoneType' object is not callable` AND that will require me to repeat @parametrized decorator for every single test method in the class. To avoid it I wanted to use it at the class level. – Malvinka Sep 16 '19 at 08:59