unittest中,想让测试用例按顺序执行,要用到TestSuite类的addTest()方法
from selenium import webdriver
import unittest
class BaiduTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
self.driver.implicitly_wait(30)
def tearDown(self):
self.driver.quit()
def test_baidu_news(self):
'''验证:测试百度首页点击新闻后的跳转'''
self.driver.find_element_by_link_text('新闻').click()
url = self.driver.current_url
self.assertEqual(url, 'http://news.baidu.com/')
def test_baidu_map(self):
'''验证:测试百度首页点击地图后的跳转'''
self.driver.find_element_by_link_text('地图').click()
self.driver.get('http://www.baidu.com')
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(BaiduTest('test_baidu_news'))
suite.addTest(BaiduTest('test_baidu_map'))
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
默认的执行顺序是TestCaseName的ASCII码顺序,调用addTest()方法后,先添加的先执行,后添加的后执行。
但是这里addTest方法没有起到作用,还是先执行test_baidu_map,后执行test_baidu_news。原因是:在pycharm中,引入了unittest模块,会默认按照unittest模式执行。需要将unittest模式转换成普通模式。
unittest模式转换成普通模式的方法:
修改成功,先执行了测试用例test_baidu_news,后执行了测试用例test_baidu_maps.