16章「テスト」の対策ポイントと例題
16章「テスト」からは本番40問中3問が出ます。unittest と pytest の書き方、モックによる差し替えを問う章です。
- unittest
- pytest
- doctest
- mock
- assert
- fixture
この章の出題数と位置づけ
16章「テスト」からは本番40問のうち3問が出題されます。 全体に占める割合は7.5%で、15章中4番目タイの出題数です(同じ3問の章が他に1章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の3問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- unittest はクラスと assertEqual 系メソッド、pytest は関数と素の assert、という書き方の差が基本です。
- setUp / tearDown が各テストの前後で毎回呼ばれることと、その呼ばれる回数を確認します。
- assertEqual / assertTrue / assertIs / assertRaises の使い分けが選択肢になります。
- unittest.mock による差し替えと、doctest が docstring の実行例をテストにする仕組みも範囲です。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. unittest で2つの値が等しいことを検証するメソッドはどれか。
- 正解assertEqual
- assertIs
- assertTrue
- assertSame
解説: assertEqual は == による等価判定。assertIs は is による同一性判定で別物。assertSame というメソッドは存在しない。
例題2. docstring の中に書いた対話モードの実行例を、そのままテストとして実行するモジュールはどれか。
- 正解doctest
- unittest
- inspect
- textwrap
解説: doctest は >>> で始まる行と期待出力を照合する。python -m doctest -v ファイル名 で実行できる。ドキュメントとテストを兼ねられるのが利点。
例題3. unittest.TestCase で、各テストメソッドの実行前に毎回呼ばれるメソッドはどれか。
- 正解setUp
- setUpClass
- __init__
- setUpModule
解説: setUp はテストメソッドごとに毎回。setUpClass はクラス単位で1回だけ(classmethod として定義)、setUpModule はモジュール単位で1回。この呼び出し回数の違いが問われる。
この章は当サイトに全7問を収録しています。残りはドリルの「章別に解く」から解けます。