我有一个构建大量测试条件的生成器方法,我知道我可以调用非类方法,但我更喜欢将参数构建方法作为我的测试类的一部分。有没有办法做到这一点?
这里是我想要做的简单描述:
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方法在调用它的测试类中。
答案 0 :(得分:3)
只需删除@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 stackoverflow.py -v
test_scenario_0_this_is_my_test (stackoverflow.MyUnitTestClass) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK