什么是unittest
这里我们将要用的unittest是python的单元测试框架,它的官网是 https://docs.python.org/2/library/unittest.html,在这里我们可以得到全面的信息。
当我们写的用例越来越多时,我们就需要考虑用例编写的规范与组织,以便于后期的维护,而unittest正是这样一款工具。我们这里用一个示例来展示用unittest脚本是什么样子的
1 # -*- coding: utf-8 -*- 2 from selenium import webdriver 3 from selenium.webdriver.common.by import By 4 from selenium.webdriver.common.keys import Keys 5 from selenium.webdriver.support.ui import Select 6 from selenium.common.exceptions import NoSuchElementException 7 from selenium.common.exceptions import NoAlertPresentException 8 #导入unittest包 9 import unittest, time, re 10 11 #SearchTest类继承自unittest.TestCase,表明这是一个测试案例 12 class SearchTest(unittest.TestCase): 13 #setUp用于初始化工作 14 def setUp(self): 15 self.driver = webdriver.Firefox() 16 self.driver.implicitly_wait(30) 17 self.base_url = "https://www.baidu.com/" 18 self.verificationErrors = [] 19 self.accept_next_alert = True 20 21 #以test开头的是我们的测试脚本 22 def test_search(self): 23 driver = self.driver 24 driver.get(self.base_url + "/") 25 driver.find_element_by_id("kw").click() 26 driver.find_element_by_id("kw").clear() 27 driver.find_element_by_id("kw").send_keys("selenium2") 28 driver.find_element_by_id("su").click() 29 30 def is_element_present(self, how, what): 31 try: self.driver.find_element(by=how, value=what) 32 except NoSuchElementException as e: return False 33 return True 34 35 def is_alert_present(self): 36 try: self.driver.switch_to_alert() 37 except NoAlertPresentException as e: return False 38 return True 39 40 def close_alert_and_get_its_text(self): 41 try: 42 alert = self.driver.switch_to_alert() 43 alert_text = alert.text 44 if self.accept_next_alert: 45 alert.accept() 46 else: 47 alert.dismiss() 48 return alert_text 49 finally: self.accept_next_alert = True 50 51 #在每个测试方法后执行,完成清理工作 52 def tearDown(self): 53 self.driver.quit() 54 self.assertEqual([], self.verificationErrors) 55 56 #整个测试过程集中在unittest的main()模块中,其默认执行以test开头的方法 57 if __name__ == "__main__": 58 unittest.main()