Execution order on python unittest

前端 未结 2 1068
猫巷女王i
猫巷女王i 2020-12-20 16:02

I need to set an order of execution for my tests, cause I need some data verified before the others. Is possible to set an order?

class OneTestCase(unittest.         


        
相关标签:
2条回答
  • 2020-12-20 16:23

    Better do not do it.

    Tests should be independent.

    To do what you want best would be to put the code into functions that are called by the test.

    Like that:

    def assert_can_log_in(self):
        ...
    
    def test_1(self):
        self.assert_can_log_in()
        ...
    
    def test_2(self):
        self.assert_can_log_in()
        ...
    

    Or even to split the test class and put the assertions into the setUp function.

    class LoggedInTests(unittest.TestCase):
        def setUp(self):
            # test for login or not - your decision
    
        def test_1(self):
            ...
    

    When I split the class I often write more and better tests because the tests are split up and I can see better through all the cases that should be tested.

    0 讨论(0)
  • 2020-12-20 16:27

    You can do it like this:

    class OneTestCase(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            # something to do
            pass
    
        def test_01_login (self):
            # first test
            pass
        def test_02_other (self):
            # any order after test_login
        def test_03_othermore (self):
            # any order after test_login
    
    if __name__ == '__main__':
        unittest.main(failfast=True, exit=False)
    

    Tests are sorted alphabetically, so just add numbers to get your desired order. Probably you also want to set failfast = True for the testrunner, so it fails instantly, as soon as the first test fails.

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