20

次の例でネストされた関数をどのように単体テストf1()しますか?

def f():
    def f1():
       return 1
    return 2

または、テストが必要な関数をネストしないでください。

4

3 に答える 3

12

このリンクにも同様の質問があります。しかし、短い答え: 外部要素から内部関数にアクセスすることはできません。

テスト目的で、内部関数をプライベートな外部関数に変更することもできますか?

于 2012-11-28T13:47:25.000 に答える
9

あなたはできないので、あなたはしません。

単体テストを外側の関数に制限するか、内側の関数を別の場所に移動する必要があります。

于 2012-11-28T13:40:57.177 に答える
1

私も同じ疑問を抱き、内部関数のテストを行う方法を見つけました。

def outer():
    def inner():
        pass

    if __debug__:
        test_inner(inner)
        # return

def test_inner(f):
    f() # this calls the inner function

outer()

基本的に、内部関数をパラメーターとして外部に送信し、必要に応じてテストできます。outer() を呼び出すと、テストが実行されます。これはクロージャーであるため、外部関数からの追加のプロパティ (変数など) が保持されます。リストを使用すると、必要な数の関数を送信できます。ifを無視するには、次のようなコードを実行するオプションがあります。

python -O code.py
于 2016-06-18T17:34:34.003 に答える