Nosetestsを使用して Pythonクラスおよびモジュールフィクスチャ をテストするPythonユニットテスト。テスト全体で最小限の設定を行います。
私が直面している問題は、テストでsetupUpModule
関数とsetUpClass
関数で定義された変数をどのように使用するかわからない(例:-_test_1
_)。
これは私が試して使用しているものです:
_import unittest
def setUpModule():
a = "Setup Module variable"
print "Setup Module"
def tearDownModule():
print "Closing Module"
class TrialTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print a #<======
b = "Setup Class variable"
@classmethod
def tearDownClass(cls):
print "Closing Setup Class"
def test_1(self):
print "in test 1"
print a #<======
print b #<======
def test_2(self):
print "in test 2"
def test_3(self):
print "in test 3"
def test_4(self):
print "in test 4"
def test_5(self):
print "in test 5"
if __name__ == "__main__":
unittest.main()
_
私が得るエラーは:
_Setup Module
ERROR
Closing Module
======================================================================
ERROR: test suite for <class 'one_setup.TrialTest'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/nose/suite.py", line 208, in run
self.setUp()
File "/Library/Python/2.7/site-packages/nose/suite.py", line 291, in setUp
self.setupContext(ancestor)
File "/Library/Python/2.7/site-packages/nose/suite.py", line 314, in setupContext
try_run(context, names)
File "/Library/Python/2.7/site-packages/nose/util.py", line 469, in try_run
return func()
File "/Users/patila14/Desktop/experimental short scripts/one_setup.py", line 13, in setUpClass
print a
NameError: global name 'a' is not defined
----------------------------------------------------------------------
_
もちろん、_gloabl a
_および_global b
_を実行すれば機能します。もっと良い方法はありますか?
str変数a
、の場合、唯一の解決策は_global a
_です。 Python 2 と Python のソースコードを見ると、setupModule()
は不思議なことをしていないように見えるため、通常のすべての名前空間ルールが適用されます。
a
がリストのように可変変数である場合は、グローバルスコープで定義してから、setupModule内に追加できます。
変数b
は、クラス内で定義されるため、扱いが簡単です。これを試して:
_@classmethod
def setUpClass(cls):
cls.b = "Setup Class variable"
def test_1(self):
print self.b
_