我已经成为 RSpec 和 Jasmine 等嵌套测试用例上下文的粉丝,我想知道是否有任何 Nose 插件实现了允许您将类嵌套为上下文的测试查找器。生成的测试将类似于以下内容:
from nose.tools import *
from mysystem import system_state
class TestMySystem (TestCase):
def setUp(self):
system_state.initialize()
class WhenItIsSetTo1 (TestCase):
def setUp(self):
system_state.set_to(1)
def test_system_should_be_1 (self):
assert_equal(system_state.value(), 1)
class WhenItIsSetTo2 (TestCase):
def setUp(self):
system_state.set_to(2)
def test_system_should_be_2 (self):
assert_equal(system_state.value(), 2)
在上述假设情况下,system_state.initialize()
将在每次测试之前被调用。我知道有 PyVows 可以做这样的事情,它看起来不错,但我正在寻找可以插入我当前项目的东西,该项目已经有许多单元测试/ Nose 式测试。
最佳答案
听起来您希望您的某些测试从其他测试继承设置代码:
from nose.tools import *
from mysystem import system_state
class TestMySystem (TestCase):
def setUp(self):
system_state.initialize()
class WhenItIsSetTo1 (TestMySystem):
def setUp(self):
super(WhenItIsSetTo1, self).setUp()
system_state.set_to(1)
def test_system_should_be_1 (self):
assert_equal(system_state.value(), 1)
class WhenItIsSetTo2 (TestMySystem):
def setUp(self):
super(WhenItIsSetTo2, self).setUp()
system_state.set_to(2)
def test_system_should_be_2 (self):
assert_equal(system_state.value(), 2)
这样做时要小心;如果您在父类中有实际的测试方法,它们也会在子类运行时执行(当然)。当我这样做时,我喜欢制作只提供 setUp、tearDown 和 classSetup/classTearDown 的纯父测试类。
这应该允许您进行任意级别的嵌套,但是一旦您这样做了,您将需要单元测试来进行单元测试...
关于python - 我可以用 Nose 嵌套测试用例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769068/