1

我有一个生成器方法,它正在构建大量测试标准,我知道我可以调用一个非类方法,但我更愿意让参数构建方法成为我的测试类的一部分。有没有办法做到这一点?

这是我想要做的简单描述:

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 方法位于调用它的测试类中。

4

1 回答 1

4

只需删除@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

您可能还想查看Python 装饰器作为静态方法

于 2015-06-17T21:48:36.930 回答