Pythonプロジェクトのテストスイートをunittestからnoseに変換しています。プロジェクトの既存のフレームワーク(unittestに基づいています)は、テスト発見と実行のための非常にカスタマイズされたコードをたくさん含んでいて、むしろぎこちないので、すべてをより合理化するために鼻に移行しようとしています。Pythonのノーズテストの継承:サブクラスからのユニットテストのフィクスチャ
しかし、テストスイートを生成するコードに問題があります。
プロジェクトのフレームワークには、テストを実行する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の例とチュートリアルが示すとおりです。しかし、第二の方法は、異なるセットアップの設定が含まれており、スーパークラスからテストを継承し、さまざまなサブクラスでテストケースを作成し、その後、すべてのテストロジックが含まれているテストクラスを定義することである:
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()で使用されている変数の多くがまだ定義されていないため、明らかに動作しないテストメソッドを最初に実行しようとします。
これの例はどこにも見つかりませんでした。また、Nose(やや疎遠でナビゲートするのが難しい)ドキュメントにもそのようなことは言えません。どのようにこれを鼻で働かせることができますか?どんな助けでも大歓迎です。
鼻デコレータを使用してsはトリックをした。今では非常に明白なようですが、時には最も明白な解決策は最も難しいものです...ヒントのために多くの感謝! – Boris