前提・実現したいこと
ここに質問の内容を詳しく書いてください。
pytestを使用してpythonのテストプログラムを作成しています。
発生している問題・エラーメッセージ
test.pyはmain.hoge1.get_hogehogeをMockし、returnをFalseにすることでmain.hoge2.runでprint_hogeを実行するかを制御しています。
これで、私の達成したいことを満たしているのですが、get_hogehogeを作成するよりも、より良い方法があるかを知りたいです。
hoge1._hogehogeの値を書き換えられればいいのですが、エラーとなり実行できませんでした。
該当のソースコード
[main.py] class hoge1: def __init__(self): self._hogehoge = True def get_hogehoge(self): return self._hogehoge def print_hoge(self): print(self._hogehoge class hoge2: def run(self): h = hoge1() if h.get_hogehoge() is True: h.print_hoge()
[test.py] import main import pytest from pytest import mark def test_run(mocker): test = mocker.patch("main.hoge1.print_hoge") mocker.patch("main.hoge1.get_hogehoge", return_value=False) h = main.hoge2() h.run() test.assert_called()
<code>ボタンで入力する言語とコードが逆になっています。インデントがわからないので修正をお願いします。
また、質問文はget_hogehogeを作成するよりも、より良い方法があるかを知りたい、ということですので、「より良い方法」以前のコードだけでなく、実際に「より良い方法」をトライしてエラーが出たコードと、そのエラーも記載いただくとよいでしょう。
加えて、過剰にhogehogeと書くと、何を目的としたコードなのかわかりにくく、それもアドバイスしにくい原因になります。出来る限り、意味を持つ変数名にしていただくとよいです。
あなたの回答
tips
プレビュー