有線統合テスト スイートに Nose を使用したいと考えています。ただし、これらのテストの一部の実行順序は重要です。
そうは言っても、実行したい順序でテストを装飾するための簡単なプラグインを一緒に投げると思いました: https://gist.github.com/Redsz/5736166
def Foo(unittest.TestCase):
@step(number=1)
def test_foo(self):
pass
@step(number=2)
def test_boo(self):
pass
私が考えていた組み込みプラグインのレビューからloadTestsFromTestCase
、修飾された「ステップ番号」でテストをオーバーライドして順序付けることができました。
def loadTestsFromTestCase(self, cls):
"""
Return tests in this test case class. Ordered by the step definitions.
"""
l = loader.TestLoader()
tmp = l.loadTestsFromTestCase(cls)
test_order = []
for test in tmp._tests:
order = test.test._testMethodName
func = getattr(cls, test.test._testMethodName)
if hasattr(func, 'number'):
order = getattr(func, 'number')
test_order.append((test, order))
test_order.sort(key=lambda tup: tup[1])
tmp._tests = (t[0] for t in test_order)
return tmp
このメソッドは、私が望む順序でテストを返していますが、テストが鼻で実行されている場合、この順序で実行されていませんか?
おそらく、この注文の概念を別の場所に移動する必要がありますか?
更新:私が行ったコメントによると、プラグインは実際に期待どおりに機能しています。pycharm テストレポーターを信頼するのは間違いでした。テストは期待どおりに実行されています。質問を削除するのではなく、そのままにしておくことにしました。