Используйте метод класса в вызове parameterize.expand
У меня есть метод генератора, который строит большой набор критериев тестирования, я знаю, что могу сделать метод, не относящийся к классу, который вызывается, но я бы предпочел, чтобы метод построения параметров был частью моего класса тестирования. Есть ли способ сделать это?
Вот простое описание того, что я хочу сделать:
class MyUnitTestClass(TestCase):
@staticmethod
def generate_scenarios():
yield ('this_is_my_test', 1, 2)
@parameterized.expand(generate_scenarios())
def test_scenario(self, test_name, input, expected_output)
self.assertEquals(input+input, expected_output)
сейчас я делаю следующее:
def generate_scenarios():
yield ('this_is_my_test', 1, 2)
class MyUnitTestClass(TestCase):
@parameterized.expand(generate_scenarios())
def test_scenario(self, test_name, input, expected_output)
self.assertEquals(input+input, expected_output)
TL; DR: я хочу, чтобы мой метод сценария generate_scenarios находился в тестовом классе, который его вызывает.
1 ответ
Решение
Просто удали @staticmethod
и это должно работать. generate_scenarios
будет просто функцией, определенной в классе, и вы получите параметризованное расширение, работающее на вас:
from unittest import TestCase
from nose_parameterized import parameterized
class MyUnitTestClass(TestCase):
def generate_scenarios():
yield ('this_is_my_test', 1, 2)
@parameterized.expand(generate_scenarios())
def test_scenario(self, test_name, input, expected_output):
self.assertEquals(input+input, expected_output)
И вот как я его запустил:
$ nosetests stackru.py -v
test_scenario_0_this_is_my_test (stackru.MyUnitTestClass) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Вы также можете рассмотреть Python декоратор как статический метод