2

この統合テストがあるとします

class TestClass(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.key = '123'

    def test_01_create_acc(self):
       user = create_account(...)
       self.key = user.key

    def test_02_check_account(self):
       user = check_account(..)
       self.assertEqual(self.key, user.key)

属性self.keyは可変ではないようです。からの古い値のままsetUpClassです。しかし、setUpClass一度しか呼び出されていませんか?

アカウント機能はセキュリティ上の理由からキーをランダムに作成するため、秘密キーを渡すことはできません。キーを返すので、その属性を変更する必要があります。できますか?

それぞれのtest_ケースが分離されているようです。

my_gloabl = None

def setUpClass(cls):
    cls.key = my_global

test1 で変更my_globalすると、test2 が取得されますNone

4

1 に答える 1

1

クラスは一度だけ設定されます。しかし、各テスト メソッドは、実際にはそのテストの異なるインスタンスから呼び出されます。

idオブジェクトごとに異なる数値を返す関数を使用して、これを実証できます。

import unittest

class TestClass(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print "setup"

    def test_01_create_acc(self):
        print id(self)

    def test_02_check_account(self):
        print id(self)

unittest.main()

私のコンピューターでは、これは次のように印刷されました。

setup
4300479824
.4300479888

メソッドが 1 回だけsetup呼び出されていることに注意してください。ただし、test1 と test2 のインスタンスの ID は異なります。

于 2012-10-16T18:44:03.970 に答える