Python 模擬試験

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

side_effect

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

from unittest.mock import Mock
m = Mock(side_effect=[1, 2])
print(m(), m())
try:
    Mock(side_effect=ValueError("x"))()
except ValueError as e:
    print(e)
  1. A

    1 1 と x が、別々の行に出力される。

  2. B

    [1, 2] と x が、別々の行に出力される。

  3. C

    1 2 のみが出力される。

  4. D

    1 2 と x が、別々の行に出力される。

正解と解説を見る

正解:D

Mock の side_effect は、リスト(順に返す)、例外(送出する)、関数(呼び出す)を指定できる。失敗する状況のテストに使う。

順実行する行実行後の変数
1`from unittest.mock import Mock`—
2`m = Mock(side_effect=[1, 2])`—
3`print(m(), m())`—
4`try:`—
5`Mock(side_effect=ValueError("x"))()`—
6`except ValueError as e:`—
7`print(e)`—
分岐`except ValueError as e:`実行される
結果実際の出力1 2 / x

学習のポイント:return_value は常に同じ値を返す。

この問題を演習で解く →

問題一覧へ

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