python自动化测试

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()
test_baidu.py

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、具体实现

测试登录

原文地址:https://www.cnblogs.com/cx59244405/p/11632978.html