10

unittestFlask アプリケーションをテストnoseし、実際にテストを実行するために使用しています。

最初の一連のテストは、テスト環境がクリーンであることを確認し、Flask アプリの構成済みデータベースでテストが実行されないようにすることです。テスト環境をきれいにセットアップしたことには自信がありますが、すべてのテストを実行することなく、そのことをある程度保証したいと思います。

import unittest

class MyTestCase(unittest.TestCase):
    def setUp(self):
        # set some stuff up
        pass

    def tearDown(self):
        # do the teardown
        pass

class TestEnvironmentTest(MyTestCase):
    def test_environment_is_clean(self):
        # A failing test
        assert 0 == 1

class SomeOtherTest(MyTestCase):
    def test_foo(self):
        # A passing test
        assert 1 == 1

失敗した場合は、TestEnvironmentTest原因unittestまたは保釈し、それ以上のテストが実行されないようにしたいと思います。(推奨)またはそれを可能にする組み込みの方法はありますか?noseSomeOtherTestunittestnose

4

4 に答える 4

9

1 つのテストを最初に実行し、そのテストでエラーが発生した場合にのみ他のテストの実行を停止するには、テストへの呼び出しを入れてsetUp()(python はテスト順序を保証しないため)、失敗する必要があります。または、失敗した場合は残りをスキップします。

skipTest()例外を発生させてもまだテストを実行しようとしているように見えるのに、実際には他のテストを実行しないので気に入っています。

def setUp(self):
    # set some stuff up
    self.environment_is_clean()

def environment_is_clean(self):
    try:
        # A failing test
        assert 0 == 1
    except AssertionError:
        self.skipTest("Test environment is not clean!")
于 2012-10-15T20:32:07.483 に答える
4

あなたのユースケースにはsetUpModule()機能があります:

で例外が発生した場合setUpModule、モジュール内のテストは実行されtearDownModuleず、 も実行されません。例外が例外である場合SkipTest、モジュールはエラーではなくスキップされたと報告されます。

この関数内で環境をテストします。

于 2012-10-15T21:09:16.000 に答える
2

skipTest()を呼び出すことで、テスト ケース全体をスキップできますsetUp()。これは Python 2.7 の新機能です。テストに失敗する代わりに、単純にすべてをスキップします。

于 2012-10-15T19:01:23.487 に答える
1

それがあなたのニーズに合っているかどうかはよくわかりませんが、ユニットテストの最初のスイートの結果を条件として、ユニットテストの 2 番目のスイートを実行することができます。

envsuite = unittest.TestSuite()
moretests = unittest.TestSuite()
# fill suites with test cases ...
envresult = unittest.TextTestRunner().run(envsuite)
if envresult.wasSuccessful():
    unittest.TextTestRunner().run(moretests)
于 2012-10-15T19:03:57.543 に答える