2012-05-01 2 views
1

누군가를위한 쉬운 점은 거의 확실합니다. 필자는 약 1 주 동안 Python을 사용 해왔고 단위 테스트에서 텍스트 픽스처를 작성하는 함수를 호출하려고 시도했을 때 NameError: global name '_build_response' is not defined이 발생했습니다. 내가 상속 또는 범위 지정에 대한 이해에서 뭔가 빠진Python unittest 설정 함수가 정의되지 않았습니다.

class HttpTestCase(unittest.TestCase): 

    def _build_response(): 
    #build and returns some text fixtures 

    def test_http_get(self): 
    response = _build_response() 

암, 또는 거기에 더 당황 뭔가이에서 잠시 동안 내 머리를 긁적되고, 같은 코드가 보인다? 모든 포인터가 감사하겠습니다.

+2

BTW HttpTestCase 클래스의 방법이다. 그런 다음 모든 테스트의 최상단에서 호출 할 필요가 없습니다. (물론 다른 코드에서 실행하면 왜 이것이 작동하지 않는지 아직도 알 수 있습니다.) – delnan

+0

@delan 감사합니다. 이 예제는 약간의 인위적 요인이었고, 다른 요인들이 이것이 setUp의 일부가되는 것을 막았습니다. 그러나 좋은 조언이었습니다. 시간을내어 건배. – markdsievers

+0

이것은 [doco] (http://docs.python.org/faq/design.html#why-must-self-be-used-explicitly-in-method-definitions-and-calls)의 일부입니다. 이것을 이해하기 위해 놓친 [this] (http://stackoverflow.com/questions/2709821/python-self-explained) 질문도 도움이됩니다. – markdsievers

답변

7
class HttpTestCase(unittest.TestCase): 

    def _build_response(self):   
     # build and returns some text fixtures 
     pass 

    def test_http_get(self): 
     response = self._build_response() 

_build_response 당신은 설정 기능을 원하는 경우, 그것은`setUp`를 호출하고 self` '의 속성으로 개체를 저장,

관련 문제