PythonのWHLファイル内の関数をモック

マットSosna:

私は、内の関数を呼び出す関数のためのテストの書き込みをしようとしている.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
)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=23979&siteId=1