Car*_*los 6 python unit-testing
我需要为我的测试设置执行顺序,因为我需要在其他测试之前验证一些数据.可以订单吗?
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()
Run Code Online (Sandbox Code Playgroud)
谢谢
Mic*_*ael 21
你可以这样做:
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)
Run Code Online (Sandbox Code Playgroud)
测试按字母顺序排序,因此只需添加数字即可获得所需的订单.可能你也想failfast = True为testrunner 设置,所以一旦第一次测试失败,它就会立即失败.
最好不要这样做。
测试应该是独立的。
要做的最好的事情就是将代码放入测试调用的函数中。
像那样:
def assert_can_log_in(self):
...
def test_1(self):
self.assert_can_log_in()
...
def test_2(self):
self.assert_can_log_in()
...
Run Code Online (Sandbox Code Playgroud)
或者甚至拆分测试类并将断言放入 setUp 函数中。
class LoggedInTests(unittest.TestCase):
def setUp(self):
# test for login or not - your decision
def test_1(self):
...
Run Code Online (Sandbox Code Playgroud)
当我拆分班级时,我经常编写更多更好的测试,因为测试被拆分,我可以更好地了解所有应该测试的案例。