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)
- A
1 1とxが、別々の行に出力される。 - B
[1, 2]とxが、別々の行に出力される。 - C
1 2のみが出力される。 - 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 |
- A
誤り。
side_effectのリストは、呼び出しのたびに次の値を返す。 - B
誤り。要素が順に返される。
- C
誤り。例外のメッセージも出力される。
- D
正しい。
side_effectにリストを渡すと、呼び出しのたびに順に値を返す。例外を渡すと、呼び出しで送出される。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。