Python 模擬試験

Python実践 模擬試験 第6回 問35・16章 テスト(unittest)

setUpClass

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

import unittest, io
calls = []
class T(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        calls.append("c")
    def test_a(self):
        pass
    def test_b(self):
        pass
unittest.TextTestRunner(stream=io.StringIO()).run(unittest.defaultTestLoader.loadTestsFromTestCase(T))
print(len(calls))
  1. A

    2

  2. B

    1

  3. C

    0

  4. D

    3

正解と解説を見る

正解:B

setUpClass はクラスのテストの前に 1 回、tearDownClass は後に 1 回。重い準備(データベース接続など)を共有するときに使う。

順実行する行実行後の変数
1`import unittest, io`—
2`calls = []`calls = []
3`class T(unittest.TestCase):`—
4└ `def setUpClass(cls):`—
5└ `@classmethod`—
6└ `def setUpClass(cls):`—
7└ `@classmethod`—
8└ `def setUpClass(cls):`—
9└ `def test_a(self):`—
10└ `def test_b(self):`—
11`unittest.TextTestRunner(stream=io.StringIO())…`—
12└ `calls.append("c")`calls = ['c']
13└ `pass`—
14└ `pass`—
15`print(len(calls))`calls = ['c']
結果実際の出力1

学習のポイント:テスト間で状態を共有しすぎると、独立性が損なわれる。

この問題を演習で解く →

問題一覧へ

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