Python 模擬試験

Python実践 模擬試験 第5回 問37・16章 テスト(unittest.mock)

patch.object

次のコードを実行したときの出力として、正しいものを1つ選べ。

from unittest.mock import patch
class A:
    def f(self):
        return 1
with patch.object(A, "f", return_value=9):
    print(A().f(), end=" ")
print(A().f())
  1. A

    1 1

  2. B

    9 9

  3. C

    9 1

  4. D

    1 9

正解と解説を見る

正解:C

patch.object(対象, "名前", ...) は、オブジェクトの属性を一時的に置き換える。ブロックを抜けると、元に戻る。デコレータとしても使える。

順実行する行実行後の変数
1`from unittest.mock import patch`—
2`class A:`—
3└ `def f(self):`—
4`with patch.object(A, "f", return_value=9):`—
5`print(A().f(), end=" ")`—
6`with patch.object(A, "f", return_value=9):`—
7`print(A().f())`—
8└ `return 1`—
結果実際の出力9 1

学習のポイント:置き換える対象は、テスト対象が実際に参照する場所を指定する。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。