0、写在前面
项目都快搞完了,感觉还是一堆的bug,人工测试还是不靠谱
意识到测试的重要性,学习下自动化测试
1、相关库
selenium:自动化测试框架,需下载需要的浏览器driver,无头浏览器
unittest:python自带的自动化测试库
HTMLTestRunner:用于生成报告
一些坑:
浏览器和driver的版本必须一致,否则起不来
必须要通过命令行的方式执行脚本,否则不会生成报告
2、一个简单的栗子
1 # -*- coding: utf-8 -*- 2 import unittest 3 from selenium import webdriver 4 import time,os 5 from HTMLTestRunner import HTMLTestRunner 6 7 8 9 option = webdriver.ChromeOptions() 10 #设置浏览器不打开 11 option.add_argument('headless') 12 13 class TestBaidu(unittest.TestCase): 14 #执行前 15 def setUp(self): 16 self.driver = webdriver.Chrome(chrome_options=option) 17 self.base_url = 'https://www.baidu.com' 18 19 #test开头的函数自动执行 20 def test_search(self): 21 u'''测试百度''' 22 self.driver.get(self.base_url) 23 input = self.driver.find_element_by_id('kw') 24 searchButton = self.driver.find_element_by_id('su') 25 input.send_keys("Python") 26 searchButton.click() 27 time.sleep(2) 28 self.assertEqual(u'Python_百度搜索',self.driver.title) 29 30 #执行后 31 def tearDown(self): 32 self.driver.quit() 33 34 if __name__ == '__main__': 35 u_test = unittest.TestSuite() 36 u_test.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBaidu)) 37 #生成报告 38 wf = open(os.getcwd()+'/result.html','wb') 39 runner = HTMLTestRunner(stream=wf,title=u"百度测试报告1",description=u"简单测测") 40 runner.run(u_test) 41 wf.close()
3、po模式和数据驱动
po模式大概就是为每个页面做个class,做好封装,页面、逻辑、数据、驱动分离开
数据驱动大概就是同一套代码,不同的数据产生不同的结果来进行测试
4、实现思路
base--findElement类,根据配置文件来找元素,把selenium的一些方法封装的更简单一些
page(页面,找到元素)--handle(操作元素)--business(业务层,执行操作)--case(最后调用)
page--找到具体元素,输入框、按钮、get_username_ele,get_password_ele,loginPage类
handle--send_username,send_password等等,loginHandle类
bussiness--整合起来,login(判断登录成功失败),logout,loginBussiness类
case--具体测试的代码,按计划记性逐项测试
大概可以按这样的表格列好后,逐项进行测试
5、具体实现
测试登录