unittest的测试顺序为:有几个测试用例,测试固件就会执行多少次。
例如:只有一个测试用例时:
setup--testcase1--teardown
import unittest class F1(unittest.TestCase): def setUp(self): print("准备工作已经做好") def tearDown(self): print("处理完成") def test_case1(self): print("执行测试用例1") if __name__ == "__main__": unittest.main()
测试结果如下:
Ran 1 test in 0.015s OK 准备工作已经做好 执行测试用例1 处理完成
例如:有多个测试用例时:
setup--testcase1--teardown--setup--tescase2--teardown--setup--testcase3
import unittest class F1(unittest.TestCase): def setUp(self): print("准备工作已经做好") def tearDown(self): print("处理完成") def test_case1(self): print("执行测试用例1") def test_case2(self): print("执行测试用例2") def test_case3(self): print("执行测试用例3") def test_case4(self): print("执行测试用例4") if __name__ == "__main__": unittest.main()
结果如下:
Ran 4 tests in 0.005s OK 准备工作已经做好 执行测试用例1 处理完成 准备工作已经做好 执行测试用例2 处理完成 准备工作已经做好 执行测试用例3 处理完成 准备工作已经做好 执行测试用例4 处理完成
总结:当有多个测试用例,然而只想执行其中的一个时,把鼠标放到想执行的测试用例上,右键执行。当全部执行时,放在最后的if语句上。
在unittest中,测试用例的执行顺序与测试用例的名称有关,按照名称的ascii码进行的,并不是按照用户写的顺序执行的。
import unittest from selenium import webdriver class F2(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get("http://www.baidu.com/") @classmethod def tearDownClass(cls): cls.driver.quit() def test_baidu_news(self): self.driver.find_element_by_link_text("新闻").click() self.driver.back() def test_baidu_map(self): self.driver.find_element_by_link_text("地图").click() self.driver.back() if __name__ == "__main__": unittest.m
执行上段代码时发现,程序先执行的test_baidu_map,后执行的test_baidu_news。