私が持っているもの:私は、抽象テストクラスとして使用していますTestBase.py
を持ってのpythonは抽象testBaseクラスのテストを防ぐunittestの自身
。
from abc import abstractmethod
class TestBase:
expectData = None
def test_check_expectData(self):
if self.expectData is None:
raise NotImplementedError('you must have expectData')
@abstractmethod
def test_command_OK(self):
raise NotImplementedError('subclasses must override test_command()!')
私は他人に継承させたいTestBase
。例TestDemo.py
ため
import unittest
from TestBase import TestBase
class TestDemo(unittest.TestCase, TestBase):
expectData = ["someData"]
def test_command_OK(self):
self.assertTrue(True)
if __name__ =='__main__':
unittest.main()
私は予想通りpython TestDemo.py
すべての作品実行する場合。私はexpectedDateを持っていない場合、私はNotImplementedError
を取得し、私はtest_command_OK
メソッドを持っていない場合、私はNotImplementedError: subclasses must override test_command()!
問題を得る:
私はsetup.py python setup.py test
からテストスイートを実行します物事が壊れます。私はsetup.pyがTestBase
クラスを単独で実行していると考えて、TestBase
クラスexpectedData
にあると考えているので、テストに失敗します。
====================================================================== ERROR: myProject.tests.TestDemo.TestBase.test_check_expectData
---------------------------------------------------------------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg) File "/Users/z002x6m/Desktop/myProject/tests/TestBase.py", line 49, in test_check_expectData
if self.expectData is None: AttributeError: TestBase instance has no attribute 'expectData'
====================================================================== ERROR: myProject.tests.TestDemo.TestBase.test_command_OK
---------------------------------------------------------------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg) File "/Users/z002x6m/Desktop/myProject/tests/TestBase.py", line 57, in test_command_OK
raise NotImplementedError('subclasses must override test_command()!') NotImplementedError: subclasses must override test_command()!
私はすべてが正常に動作したときである私が直接TestDemoを実行したとき、私は<class '__main__.TestDemo'>
を取得し、私のtest_check_expectData(self)
方法でprint(self.__class__)
をプリントアウトした場合。 python setup.py test
を実行するとmyProject.tests.TestDemo.TestBase
が得られます。
setup.py
TestBase
クラスを実行しないように指示する方法はありますか?多分@unittest.skipis , @unittest.skipif, @unittest.skipunless
?私はサブクラスがこれらすべてのサブクラスにexpectDataを持たせたいというテストが必要なので、これらのテストをスキップする必要はありません。 TestBaseはテンプレートとしての使用を意図されており、force/checkサブテストクラスはexpectData
のようなすべての要件を持っています。それはそれ自身で実行するべきではありません。この問題を解決するにはどうすればよいですか?私はそれが、どうやら
「物事が壊れる」場合SkipTestがテストをスキップするでしょう使用することを意味していても提案を気にしません。十分じゃない。完全なスタックトレースを送信します。今は問題の原因を推測しているようです。 –
私はすべてのテストが失敗したと言うときに失敗しました。あなたは私の投稿を編集させてください。 –
フォーマットのコンソール出力をコードでお願いします。私は携帯電話に乗っているので、手伝ってはいけません。 –