mju*_*ewu 5 python testing bdd nose
我已经成为像 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)
Run Code Online (Sandbox Code Playgroud)
在上面的假设情况下,system_state.initialize()会在每次测试之前调用。我知道有 PyVows 可以做这样的事情,它看起来不错,但我正在寻找一些东西来插入我当前的项目,该项目已经有许多单元测试/鼻子风格的测试。
听起来您希望某些测试继承其他测试的设置代码:
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)
Run Code Online (Sandbox Code Playgroud)
执行此操作时要小心;如果您在父类中有实际的测试方法,那么它们也会在子类运行时执行(当然)。当我这样做时,我喜欢制作仅提供 setUp、tearDown 和 classSetup/classTearDown 的纯父测试类。
这应该允许您任意级别的嵌套,尽管一旦您这样做,您将需要单元测试来进行单元测试......