doctest の実行結果
次のコードを実行したときの出力として、正しいものを1つ選べ。
import doctest, io, contextlib
def add(a, b):
"""
>>> add(1, 2)
3
>>> add(2, 2)
5
"""
return a + b
t = doctest.DocTestFinder().find(add, "add", globs={"add": add})[0]
with contextlib.redirect_stdout(io.StringIO()):
res = doctest.DocTestRunner().run(t)
print(res.attempted, res.failed)
- A
2 1 - B
2 0 - C
1 1 - D
2 2
正解と解説を見る
正解:A
doctest は、docstring の >>> の例を実行し、出力が期待どおりかを調べる。実行した数と失敗した数が結果として返る。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import doctest, io, contextlib` | — |
| 2 | `def add(a, b):` | — |
| 3 | `t = doctest.DocTestFinder().find(add, "add", …` | — |
| 4 | `with contextlib.redirect_stdout(io.StringIO()…` | — |
| 5 | `res = doctest.DocTestRunner().run(t)` | res = TestResults(failed=1, attempted=2) |
| 6 | └ `return a + b`(2回) | a = 2, b = 2 |
| 7 | `with contextlib.redirect_stdout(io.StringIO()…` | — |
| 8 | `print(res.attempted, res.failed)` | res = TestResults(failed=1, attempted=2) |
| 結果 | 実際の出力 | 2 1 |
- A
正しい。2 つの例を実行し、2 つ目の期待値が合わず、1 つが失敗する。
- B
誤り。
add(2, 2)は 4 で、期待値 5 と合わない。 - C
誤り。実行された例は 2 つ。
- D
誤り。1 つ目の例は成功する。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。