2014-02-05 2 views
2

setup_class 메소드에서 json 파일을 읽는 테스트 스위트를 설치하고 json 파일에서 어떤 테스트가 실행되어야하는지, 어떤 테스트가 실행되지 않아야하는지 언급 할 것이다. 따라서이 접근법을 사용하면 json 파일 만 변경하고 테스트 스위트는 건드리지 않고 실행할 테스트 케이스를 말할 수 있습니다. Python : Nosetests : 런타임 중에 setup_class 메소드에서 속성/태그를 설정할 수 있습니까?

그러나 setup_class 방법에

나는 다음을 수행하려고 : -

class TestCPU: 
    testme=False 

    @classmethod 
    def setup_class(cls): 
     cls.test_core.testme=True 

    def test_core(self): 
     print 'Test CPU Core' 
     assert 1 

명령 아래 실행 : -

nosetests -s -a testme 

그것은 다음과 부여합니다 오류 : -

File "/home/murtuza/HWTestCert/testCPU.py", line 7, in setup_class 
    cls.test_core.testme=False 
    AttributeError: 'instancemethod' object has no attribute 'testme' 

그래서, setup_class 동안 테스트 메소드의 속성을 설정할 수 있습니까?

+0

이것은 위대한 것 같습니다 @ Murtuuuuu :) –

답변

0

여기에는 여러 가지 방법이 있지만 분명히 할 수있는 방법이 있습니다. 테스트 클래스 내부

, 당신의 JSON 파일에 읽고 방법이 테스트를 생략하는 글로벌 배열을 생성하는 방법을 만들기 - skiptests

당신이 지금해야 할 일은 모든 테스트를위한 설정 장식을 사용하다 case 메소드를 사용합니다. 이 데코레이터 내에서 현재 함수가 skiptests인지 확인하십시오. 그렇다면 nosetests의 사용자 정의 데코레이터 nose.tools.nottest을 호출하여 테스트를 건너 뜁니다. 그렇지 않으면 테스트중인 함수를 리턴하십시오.

코드에 넣어 :

def setup_test_method1(func): 
    if func.__name__ not in skiptests: 
     return func 
    else: 
     return nose.tools.nottest(func) 


@with_setup(setup_test_method1) 
def test_method1(): 
    pass 

이 코드를 테스트하지 않은,하지만 나는 우리가 다른 장식 내에서 장식을 호출 할 수 있다고 생각합니다. 어떤 경우에는 이것이 가능할 수 있습니다.

1

정의 된대로 testme은 TestCPU 클래스의 구성원이고 <unbound method TestCPU.test_core>은이 특성에 대해 알지 못합니다. cls.test_core.__dict__['testme']=True을 사용하여 코 속성을 주입 할 수 있습니다. 그러나 속성이 확인되기 전에 setup_class 메서드가 호출되기 때문에 특성이 설정 되더라도 테스트는 건너 뜁니다. 그러나 당신은 확실히 같이, 수입의 특성과 테스트를 장식 할 수 있습니다 : 당신이 무엇을보고 다이빙 할 수 있도록

또한 nosetests에 --pdb 옵션을 시도 할 수 있습니다
import unittest 

class TestCPU(unittest.TestCase): 
    def test_core(self): 
     print 'Test CPU Core' 
     assert 1 

TestCPU.test_core.__dict__['testme']=True 

, 그것은 오류에 디버거를 가져올 것이다 잘못된. 확실히 인생에서 두 번째로 좋아하는 것입니다.