一尘不染

python unittest的执行顺序

python

我需要为测试设置执行顺序,因为我需要先验证一些数据。可以下订单吗?

class OneTestCase(unittest.TestCase):
    def setUp(self):
        # something to do
    def test_login (self):
        # first test
        pass
    def test_other (self):
        # any order after test_login
    def test_othermore (self):
        # any order after test_login
if __name__ == '__main__':
    unittest.main()

谢谢


阅读 444

收藏
2021-01-20

共1个答案

一尘不染

最好不要这样做。

测试应该是独立的。

要做您最想做的就是将代码放入测试调用的函数中。

像那样:

def assert_can_log_in(self):
    ...

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

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

甚至拆分测试类,并将断言放入setUp函数中。

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

    def test_1(self):
        ...

当我拆分班级时,我经常编写更多更好的测试,因为测试被拆分,并且在应该测试的所有情况下我都能看到更好的结果。

2021-01-20