Pythonプロジェクトのテストスイートをunittestからnoseに変換しています。プロジェクトの既存のフレームワーク(unittestに基づく)はかなり不格好で、テストの検出と実行のために大幅にカスタマイズされたコードがたくさん含まれているため、すべてをより合理化するためにnoseに移行しようとしています。
ただし、テストスイートを生成するコードで問題が発生しています。
プロジェクトのフレームワークには、テストを実行する2つの方法があります。1つは
class TestSomething(unittest.TestCase):
def setUp(self):
...
def test_x(self):
...
def test_y(self):
...
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestSomething))
これは「簡単な」方法であり、すべてのNoseの例とチュートリアルが示すものであり、機能します。ただし、2番目の方法は、すべてのテストロジックを含むテストクラスを定義し、さまざまなセットアップ構成を含むさまざまなサブクラスでテストケースを作成し、スーパークラスからテストを継承することです。
class TestSomething(unittest.TestCase):
def test_x(self):
...
def test_y(self):
...
class TestCase1(TestSomething):
def setUp(self):
...
class TestCase2(TestSomething):
def setUp(self):
...
suite = unittest.TestSuite()
cases = [TestCase1,TestCase2]
suite.addTests([unittest.makeSuite(case) for case in cases])
これは、ノーズが失敗するものです。最初にテストメソッドを実行しようとしますが、スーパークラスにsetUp()がなく、test_x()およびtest_y()で使用される変数の多くがまだ定義されていないため、明らかに機能しません。
私はこれがどこでも行われた例を見つけていません、そしてノーズの(かなりまばらでナビゲートするのが難しい)ドキュメントもそれについて言及していないようです。どうすればこれを鼻で機能させることができますか?どんな助けでも大歓迎です。