setuUpclassとtearDownclassの使い方を記録します

2367 ワード

(1)クラスにsetup()メソッドが定義されている場合、テストプログラムは各テスト項目を実行する前にこのメソッドを呼び出す.
同様に、tearDown()メソッドは、すべてのテスト項目の実行が完了すると呼び出されます.次のことを確認します.
import unittest class SimpleTest(unittest.TestCase):
def setUp(self):
    self.foo = list(range(10))
    print(self.foo)
    print("="*30)
def test_1st(self):
    self.assertEqual(self.foo.pop(), 9)
    print(self.foo)
    print("+"*30)
def test_2nd(self):
    self.assertEqual(self.foo.pop(), 9)
    print(self.foo)

if name == ‘main’: unittest.main()ここで2回のテストはいずれも同じインスタンス属性selfであることに注意する.fooはpop()呼び出しを行ったが、テスト結果はpass、すなわち説明、test_1 stとtest_2 ndはそれぞれ呼び出し前にsetUp()を1回呼び出した.
(2)setup/tearDownを全行程で1回だけ呼び出したい場合はどうすればいいですか?setuUpClass()とtearDownClass()クラスメソッドを使用します.注意この2つの方法を使うときは必ず@classmethodアクセサリーで飾ってください.
import unittest
class SimpleTest(unittest.TestCase): @classmethod def setUpClass(self): self.foo = list(range(10)) print(self.foo) print("="*30)
def test_1st(self):
    self.assertEqual(self.foo.pop(), 9)
    print(self.foo)

def test_2nd(self):
    self.assertEqual(self.foo.pop(), 8)
    print(self.foo)

@classmethod
def tearDownClass(self):
    print('\t')
    print('+'*30)

if name == ‘main’: unittest.main()
この例ではクラスレベルのsetUpClass()クラスメソッドを使用し,2回目のpop()呼び出しの予想戻り値を変更した.実行結果は、すべてのテスト項目が呼び出される前にsetUpClass()が1回しか呼び出されていないことを示しています.
(3)setUp/tearDownをファイルレベル全体で1回だけ呼び出したい場合は、setUpModule()とtearDownModule()の2つの関数を使用します.TestCaseクラスと同級であることに注意してください.
import unittest import time
def setuUpModule():print(‘集積テスト------スタート’)print(’)
def tearDownModule():print(‘集積テスト------終了’)print(’)
class SimpleTest1(unittest.TestCase): def test_1 st(self):print(‘ユニットテスト1-step 1’)time.sleep(1)
def test_2nd(self):
    print(' 1---step1')
    time.sleep(1)

class SimpleTest2(unittest.TestCase): def test_3 st(self):print(‘ユニットテスト2-step 3’)time.sleep(1)
def test_4nd(self):
    print(' 2---step4')
    time.sleep(1)

if name == ‘main’: unittest.main()
集積テスト------ユニットテスト1-step 1ユニットテスト1-step 1ユニットテスト2-step 3ユニットテスト2-step 4集積テスト------一般assert*()メソッドがキャプチャされていない異常を投げ出した場合、このテスト例はfailとして記載され、テストは続行されます.ただし、setup()に異常が発生すると、テストプログラム自体にエラーがあり、後のテスト例もtearDown()も実行されないと考えられます.すなわち、tearDown()はsetup()が正常に実行された場合にのみ実行され、必ず実行される.