私は、内の関数を呼び出す関数のためのテストの書き込みをしようとしている.whl
ファイルを、私は、ホイールに機能をモックに苦労しています。私は自分の仮想環境にインストールされ、車輪を持っている-私はホイールをインストールしpip install my_wheel.whl
た環境にいる間。ホイールでのパッケージが呼び出されますmy_package
。
私がテストしたい関数は次のようになります。
from my_package import wheel_function
def my_func():
x = wheel_function()
return x + 5
私はモックとしたいwheel_function
テストがちょうど見てmy_func
。
私のテストスクリプト:
import pytest
def mock_wheel_function():
return 5
def test_my_func(mocker):
my_mock = mocker.patch("src.wheels.my_wheel.path.to.wheel_function",
side_effect=mock_wheel_function)
# (Do stuff)
私は次のエラーを取得します:AttributeError: module 'src.wheels' has no attribute 'my_wheel'
。
私のディレクトリ構造はこのようなものです。
SRC
| ホイール
| ........ my_wheel.whl
| モジュール
| ........ my_module
テスト
| - test_modules
| ........ test_my_module
私は仮想環境(つまり、モジュールへのパスを渡すしようとした場合/Users/me/venv/lib/python3.7/site-packages/....
)、私が得ますModuleNotFoundError: module '/Users/me/venv/lib/python3' not found
。
何か案は?ありがとうございました
使用している場合mocker.patch
、あなたはからかっているオブジェクトではなく、相対的なファイルシステムのパスにPythonのimportパスを提供する必要があります。
以来wheel_function
モジュールに含まれているmy_package
、あなたはセットアップにあなたのあざける者をようになるでしょう
my_mock = mocker.patch(
"my_package.wheel_function",
side_effect=mock_wheel_function
)