次のようなモジュール A があります。
import unittest2
def check_function():
# performs actions and returns True or False
return smth
CHECK = check_function()
class A(unittest2.TestCase):
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# test check
@unittest2.skipIf(CHECK, "skip message 2")
def test_2(self):
# test check
モジュール A は、別のモジュール B によってインポートされています。グローバル変数 CHECK はいつ初期化されますか? 輸入時?クラスのインスタンス化時?
クラス A が呼び出されるたびに CHECK 変数を設定する必要があります。どうすればこれを達成できますか?
編集:私は次のことを試しました(これは私が探しているものかもしれません)が、setUpClass内でCHECKがまったく設定されていません(check_function()が何を返してもFalseのままです)。
import unittest2
def check_function():
# performs actions and returns True or False
return smth
CHECK = False
class A(unittest2.TestCase):
global CHECK
@classmethod
def setUpClass(cls):
CHECK = check_function()
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# test check
@unittest2.skipIf(CHECK, "skip message 2")
def test_2(self):
# test check
テストが呼び出されるたびに CHECK を 1 回設定する方法のアイデアはありますか?
編集: check_function() は確かに 1 回呼び出されますが、unittest2.skipIf が setUpClass で設定された値を「認識」せず、宣言時に設定された False 値に固執する理由がわかりませんか?
解決:
コードの最終的なスケルトンは次のようになります。
import unittest2
def check_function():
# performs checks and returns True or False
return smth
class A(unittest2.TestCase):
CHECK = check_function()
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# do tests
self.assertTrue(True)
@unittest2.skipIf(CHECK, "skip message 1")
def test_2(self):
# do tests
self.assertTrue(True)