テスト メソッド内のクラス属性に値を設定し、別のテスト メソッドで同じクラス属性の値を使用したいと考えています。メソッドでテストケースを実行して通常の方法で試したところ、run
としてエラーが発生しましAttributeError: 'Unit' object has no attribute 'b'
た。とにかく、global
変数を使用して他の解決策を見つけ、クラスを変数に割り当てることで別の解決策を見つけました。別の方法で同じように設定したクラス属性を取得できない理由を教えてください。また、メソッドを使用して実際のプロセスを説明するのを手伝ってもらえますかrun
...よろしくお願いします。
これが私が試したサンプルコードです:
import unittest
class Unit(unittest.TestCase):
def test_i(self):
self.b=20
def test_j(self):
print self.b
suite=unittest.TestLoader().loadTestsFromTestCase(Unit)
unittest.TextTestRunner(verbosity=2).run(suite)
test_i (__main__.Unit) ... ok
test_j (__main__.Unit) ... ERROR
======================================================================
ERROR: test_j (__main__.Unit)
----------------------------------------------------------------------
Traceback (most recent call last):
File "<pyshell#52>", line 5, in test_j
AttributeError: 'Unit' object has no attribute 'b'
----------------------------------------------------------------------
Ran 2 tests in 0.078s
FAILED (errors=1)
<unittest.runner.TextTestResult run=2 errors=1 failures=0>
#The two ways which I solved...
#1.By Assinging class to a variable
import unittest
class Unit(unittest.TestCase):
def test_i(self):
Class=Unit
Class.b=20
def test_j(self):
print self.b
suite=unittest.TestLoader().loadTestsFromTestCase(Unit)
unittest.TextTestRunner(verbosity=2).run(suite)
test_i (__main__.Unit) ... ok
test_j (__main__.Unit) ... 20
ok
----------------------------------------------------------------------
Ran 2 tests in 0.094s
OK
<unittest.runner.TextTestResult run=2 errors=0 failures=0>
#2.By using global attribute,but I need the class attribute value to be set and retrieved
import unittest
class Unit(unittest.TestCase):
def test_i(self):
global b,
b=20
def test_j(self):
print b
suite=unittest.TestLoader().loadTestsFromTestCase(Unit)
unittest.TextTestRunner(verbosity=2).run(suite)
test_i (__main__.Unit) ... ok
test_j (__main__.Unit) ... 20
ok
----------------------------------------------------------------------
Ran 2 tests in 0.063s
OK
<unittest.runner.TextTestResult run=2 errors=0 failures=0>