私はpytestとasynctestを使用して、F2とモックF1をテストしようとモジュール名/ app.pypythonを使って別の関数内のコルーチン関数をPythonモックにパッチしますか?
async def f1(arg):
# do something
return arg + '1'
async def f2(arg):
result = await f1(arg)
return result
に二つの機能を持っています。
私は
に合格
def sf_f1(arg):
return 'some value'
@pytest.mark.asyncio
async def test_f2():
with asynctest.mock.patch('module_name.app.f1', side_effect=sf_f1):
assert 'some value' == await f2('test')
テストを行う。しかし、私はなぜdoesnの私は
assert 'some value' == await f2('test')
AssertionError: assert 'some value' == 'test1'
- some value
+ test1
を取得し、この
import module_name
@pytest.fixture()
def mock_f1():
return asynctest.CoroutineMock(module_name.app.f1, side_effect=sf_f1)
@pytest.mark.asyncio
async def test_f2_2(mock_f1):
assert 'some value' == await f2('test')
ような何かを行うしたい場合にのみ、動作します第二の道はうまくいきますか?
何が問題なのですか?あなたの望む結果は何ですか?実際の結果は何ですか? –
モックが機能せず、関数f1が実行されます。私は戻り値またはside_effectを模擬関数に追加したい。 – Oksana
side_effect関数を追加しました。 最初のケースでは、動作します。 2番目のケースでは、関数f2が実行され、side_effect関数は実行されません。 – Oksana