2012-01-07 2 views
3

RSpec 및 Jasmine과 같은 중첩 테스트 사례 컨텍스트의 팬이되었고, 컨텍스트로 클래스를 중첩 할 수있는 테스트 파인더를 구현하는 Nose 플러그인이 있는지 궁금합니다. 그 결과 테스트는 다음과 같이 보일 것이다 : 위의 가상 경우Nose로 TestCases를 중첩 할 수 있습니까?

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가 있다는 것을 알고 있으며, 좋아 보이지만, 이미 unittest/nose 스타일의 테스트가있는 현재 프로젝트에 플러그 할 무언가를 찾고 있습니다.

답변

2

그것은 소리 :이 작업을 수행 할 때

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 만 제공하는 순수 부모 테스트 클래스를 만들고 싶습니다.

이, 당신에게 중첩 임의의 수준을 허용해야하지만 당신은 당신이 응답에 대한 ... 단위 테스트에 대한

0

내가 아는 한 멀지 만 module and package levels의 설정 및 teardown 방법으로 비슷한 효과를 얻을 수 있습니다.

귀하의 예는 다음이 될 것입니다 : 다른 테스트에서 설정 코드를 상속 테스트의 일부를 원하는처럼

def setup(): 
    system_state.initialize() 

def teardown(): 
    system_state.teardown() 

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) 
+0

감사를 단위 테스트를 필요 해요 그렇게되면. 나는 모듈 수준의 설비에 대해 알고 있었지만, 좀 더 일반적인 것을 찾고있다. 예를 들어, 모듈 비품을 사용하더라도 2 레벨의 컨텍스트로 제한됩니다 (2 레벨은 1 레벨보다 훨씬 더 충분하지만). 새로운 컨텍스트를 원할 때마다 새로운 모듈을 만들어야합니다. – mjumbewu

관련 문제