什么是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()
View Code

相关文章: