在 nose parameterize.expand 调用中使用 class 方法
use class method in nose parameterize.expand call
我有一个构建大量测试标准的生成器方法,我知道我可以调用一个非 class 方法,但我更愿意将参数构建方法作为我的一部分测试 class。有办法吗?
这里简单描述一下我想做的事情:
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 方法在调用它的测试 class 中。
只需删除 @staticmethod
即可。 generate_scenarios
只是在 class 中定义的一个函数,您将得到参数化扩展为您工作:
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 Whosebug.py -v
test_scenario_0_this_is_my_test (Whosebug.MyUnitTestClass) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
您可能还想查看 Python decorator as a staticmethod
我有一个构建大量测试标准的生成器方法,我知道我可以调用一个非 class 方法,但我更愿意将参数构建方法作为我的一部分测试 class。有办法吗?
这里简单描述一下我想做的事情:
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 方法在调用它的测试 class 中。
只需删除 @staticmethod
即可。 generate_scenarios
只是在 class 中定义的一个函数,您将得到参数化扩展为您工作:
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 Whosebug.py -v
test_scenario_0_this_is_my_test (Whosebug.MyUnitTestClass) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
您可能还想查看 Python decorator as a staticmethod