2012-05-01 50 views
1

誰かのためにここにいくつかの簡単な点があります。私は約1週間Pythonを使用していましたが、私のユニットテストでテキストフィクスチャを構築する関数を呼び出そうとすると、NameError: global name '_build_response' is not definedを取得しています。コードスニペットのように見える、これをしばらくの間、私の頭を悩まれて:Pythonユニットテスト設定関数 'が定義されていません'

class HttpTestCase(unittest.TestCase): 

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

    def test_http_get(self): 
    response = _build_response() 

私は相続やスコープの私の理解では何かが足りない、またはそれ以上恥ずかしい何かがあるだろうか?任意のポインタが高く評価されました。

+2

ところで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)Iの一部ですこれを理解するために逃した、[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``の属性としてオブジェクトを格納、

関連する問題