Python unittest: cancel all tests if a specific test fails

前端 未结 4 883
刺人心
刺人心 2020-12-31 12:42

I am using unittest to test my Flask application, and nose to actually run the tests.

My first set of tests is to ensure the testing enviro

相关标签:
4条回答
  • 2020-12-31 13:03

    I'm not quite sure whether it fits your needs, but you can make the execution of a second suite of unittests conditional on the result of a first suite of unittests:

    envsuite = unittest.TestSuite()
    moretests = unittest.TestSuite()
    # fill suites with test cases ...
    envresult = unittest.TextTestRunner().run(envsuite)
    if envresult.wasSuccessful():
        unittest.TextTestRunner().run(moretests)
    
    0 讨论(0)
  • 2020-12-31 13:05

    In order to get one test to execute first and only halt execution of the other tests in case of an error with that test, you'll need to put a call to the test in setUp() (because python does not guarantee test order) and then fail or skip the rest on failure.

    I like skipTest() because it actually doesn't run the other tests whereas raising an exception seems to still attempt to run the tests.

    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!")
    
    0 讨论(0)
  • 2020-12-31 13:12

    For your use case there's setUpModule() function:

    If an exception is raised in a setUpModule then none of the tests in the module will be run and the tearDownModule will not be run. If the exception is a SkipTest exception then the module will be reported as having been skipped instead of as an error.

    Test your environment inside this function.

    0 讨论(0)
  • 2020-12-31 13:23

    You can skip entire test cases by calling skipTest() in setUp(). This is a new feature in Python 2.7. Instead of failing the tests, it will simply skip them all.

    0 讨论(0)
提交回复
热议问题