繁体   English   中英

Python unittest 上的执行顺序

[英]Execution order on Python unittest

我需要为我的测试设置执行顺序,因为我需要在其他数据之前验证一些数据。 可以设置订单吗?

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()

你可以这样做:

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 ,因此一旦第一个测试失败,它就会立即失败。

最好不要这样做。

测试应该是独立的。

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

像那样:

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

当我拆分班级时,我经常编写更多更好的测试,因为测试是分开的,我可以更好地了解所有应该测试的案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM