【python】【pytest-mock】クラス外メソッドをモックにする方法
クラス外メソッドをモックにする必要があった為、その方法のメモ書き。
例として、以下の「time_util.py」があったとします。
import time
def time_msec() -> int:
return int(time.time() * 1000)
「time_util.py」は、pyファイルに直にメソッドが記載されているもので、
これをpytest-mockを利用して、モック化する場合に、以下の記述でモック化する事が出来ませんでした。
import time_util
class Test正常系():
def test_正常ケース(self, mocker):
# time_msecをモックにする
mock_test = mocker.patch("time_util.time_msec")
mock_test.return_value = 1000
上記の形で実行してもコード上は実行時エラーとならず進みますが、実際にはモック化出来ておりません。
方法として、「time_util.py」をimportしている個所(※ここでは仮に、xxx_class.pyで使用しているとする)をモック化します。
import time_util
import xxx_class
class Test正常系():
def test_正常ケース(self, mocker):
# time_msecをモックにする
mock_test = mocker.patch("xxx_class.time_util.time_msec")
mock_test.return_value = 1000
上記のような形で、うまくモック化する事が出来ました。
※まぁそもそもpyファイル内で、クラス化していないのもどうかと思うが。。
解決した方法のメモ書き程度にとらえて頂ければ幸いです。
Author And Source
この問題について(【python】【pytest-mock】クラス外メソッドをモックにする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/suzuki617/items/44557a71cf978ec24215著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .