要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单元测试的处理逻辑和UI的对应关系,根据分层自动化的测试思想, UI>>接口>>最底层就是单元,对于单元级别的自动化测试, 是白盒测试范畴, 用一段代码去测试一段代码, 而我们则是需要利用单元测试框架的一些组织驱动单元来编写我们的自动化测试脚本, 而unittest是python自带的单元测试框架,我们不必深究,我们只是利用unittest封装好的一部分规则方法,去填充你的脚本
1 # coding: utf-8
2 '''
3 @author : hx
4 @desc : 重点学习unittest的用法
5 注意setUp/setUpClass, tearDown/tearDownClass 的区别
6 1.setUp:每个测试函数运行前运行
7 2.tearDown:每个测试函数运行完后执行
8 3.setUpClass:必须使用@classmethod装饰器,所有test运行前运行一次
9 4.tearDownClass:必须使用@classmethod装饰器,所有test运行后运行一次
10
11 unittest 还有一些不常用的装饰器:
12 @unittest.skip(reason):无条件跳过测试,reason描述为什么跳过测试
13 @unittest.skipif(condititon,reason):condititon为true时跳过测试
14 @unittest.skipunless(condition, reason):condition 不是true时跳过测试
15 @unittest.expectedFailure:如果test失败了,这个test不计入失败的case数目
16 '''
17
18 import unittest
19 import time
20 from selenium import webdriver
21
22 class SearchTest(unittest.TestCase):
23 @classmethod
24 def setUpClass(cls):
25 cls.driver = webdriver.Chrome()
26 cls.driver.implicitly_wait(30)
27 cls.driver.maximize_window()
28 cls.base_url = 'http://www.baidu.com/'
29 cls.driver.get(cls.base_url)
30
31 cls.search_text = cls.driver.find_element_by_id('kw')
32 cls.search_btn = cls.driver.find_element_by_id('su')
33
34 def test_search_btn_displayed(self):
35 self.assertTrue(self.search_btn.is_displayed())
36 self.assertTrue(self.search_btn.is_enabled())
37
38 def test_search_text_maxlength(self):
39 max_length = self.search_text.get_attribute('maxlength')
40 self.assertEqual('255', max_length)
41
42 def test_search(self):
43 self.search_text.clear()
44 self.search_text.send_keys('博客园传神')
45 self.search_btn.click()
46
47 time.sleep(4)
48 title = self.driver.title
49 self.assertEqual(title, u'博客园传神_百度搜索')
50
51 @classmethod
52 def tearDownClass(cls):
53 cls.driver.quit()
54
55 if __name__ == '__main__':
56 unittest.main(verbosity = 3)
57