次の例でネストされた関数をどのように単体テストf1()
しますか?
def f():
def f1():
return 1
return 2
または、テストが必要な関数をネストしないでください。
次の例でネストされた関数をどのように単体テストf1()
しますか?
def f():
def f1():
return 1
return 2
または、テストが必要な関数をネストしないでください。
このリンクにも同様の質問があります。しかし、短い答え: 外部要素から内部関数にアクセスすることはできません。
テスト目的で、内部関数をプライベートな外部関数に変更することもできますか?
あなたはできないので、あなたはしません。
単体テストを外側の関数に制限するか、内側の関数を別の場所に移動する必要があります。
私も同じ疑問を抱き、内部関数のテストを行う方法を見つけました。
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