python unittes上的执行顺序

2024-05-18 12:34:56 发布

您现在位置: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()

谢谢


Tags: 数据订单testself顺序maindeflogin
2条回答

最好不要这样做。

测试应该是独立的。

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

像这样:

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):
        ...

当我拆分类时,我经常编写越来越多更好的测试,因为测试是拆分的,我可以更好地理解所有应该测试的案例。

你可以这样做:

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)

测试是按字母顺序排序的,所以只需添加数字即可获得所需的顺序。可能您还想为testrunner设置failfast = True,因此一旦第一个测试失败,它就会立即失败。

相关问题 更多 >

    热门问题