1. ホーム
  2. python

[解決済み] Pythonモックにおけるモック属性?

2023-03-16 18:29:40

質問

私は mock を使うのにかなり苦労しています。

def method_under_test():
    r = requests.post("http://localhost/post")

    print r.ok # prints "<MagicMock name='post().ok' id='11111111'>"

    if r.ok:
       return StartResult()
    else:
       raise Exception()

class MethodUnderTestTest(TestCase):

    def test_method_under_test(self):
        with patch('requests.post') as patched_post:
            patched_post.return_value.ok = True

            result = method_under_test()

            self.assertEqual(type(result), StartResult,
                "Failed to return a StartResult.")

このテストは実際には正しい値を返しますが r.ok はモックオブジェクトであって True . どのようにして Python の mock ライブラリでどのようにモックを作るのでしょうか?

どのように解決するのですか?

あなたは return_value PropertyMock :

with patch('requests.post') as patched_post:
    type(patched_post.return_value).ok = PropertyMock(return_value=True)

これは、次のような意味です。 requests.post を呼び出したら、その戻り値に対して PropertyMock を設定します。 ok を返します。 True .