使用 Python+Selenium + 第三方库实现简单的 web 自动化测试框架,为 web 自动化测试编写更加便利和可维护。
一、配置(config)
1.1 说明
设置自动化案例运行时的属性值。
安排自动化案例的执行顺序。
所在路径:
…\Project_Selenium\config
1.2 文件
1.2.1 config.ini
目录:
…\Project_Selenium\config\config.ini
配置字段:
1 [PROJECT]
1.1 browserType
说明:
浏览器类型
示例:
browserType = Chrome
browserType = FireFox
2 [TEST]
2.1 timeOut
说明:
隐形等待时间,单位秒
示例:
timeOut = 10
3 [LOG]
3.1 loggingLevel
说明:
输出日志级别
支持debug, info, warn, warning, error, fatal, critical,级别有低到高,配置级别会记录>=该级别的日志信息
示例:
loggingLevel = info
loggingLevel = error
4 [EMAIL]
4.1 sendEmail
说明:
自动化执行完毕后是否发送邮件
示例:
sendEmail = False
4.2 SMTPLoginName
说明:
SMTP服务器登录名
示例:
SMTPLoginName = zhangsan@
4.3 SMTPLoginPasswd
说明:
SMTP服务器登录密码
示例:
SMTPLoginPasswd = 12345678
4.4 senderAddress
说明:
发件地址
示例:
senderAddress = zhangsan @
4.5 SMTPServerAddress
说明:
SMTP服务器地址
示例:
SMTPServerAddress = smtp-
4.6 SMTPPort
说明:
SMTP服务器地址端口
示例:
SMTPPort = 587
4.7 emailTitle
说明:
邮件主题
示例:
emailTitle = Web自动化测试报告邮件
4.8 emailText
说明:
正文内容
示例:
详细测试报告请查看附件…
5 [receiversAddress]
说明:
收件地址 可配置多个
注意:
选项名不能重复
5.1 address1
说明:
地址1
示例:
address1 =123456789@
5.2 address2
说明:
地址2
示例:
address2 = zhangsan@
测试案例运行配置.xlsx
目录:
…\Project_Selenium\config\测试案例运行配置.xlsx
配置说明:
如下表格为<测试案例运行配置.xlsx>的配置样式(Sheet页)
配置方式 路径 文件名 类名 方法名 是否执行 场景描述 说明
1-按方法运行 test 案例_1.py Test_1 test_baidu_1_search Y 1-按方法运行 test 案例_2.py Test_2 test_baidu_2_search Y 1-按方法运行 test 案例_2.py Test_2 test_baidu_3_search N 2-按类名运行 test 案例_2.py Test_2 - Y 3-按路径运行 \test\测试集_1\ - - - Y 3-按路径运行 \test\ - - - Y
1 配置方式
说明:
组织测试案例、运行测试案例的方式。
运行时会按照案例顺序从上往下执行。
多进程并发执行只需要在该案例中配置其他Sheet页即可,同一Excel中的不同Sheet页并发执行。
1.1 1-按方法运行
说明:
我们以案例1.py文件为例,如下图。
执行时只会执行该方法内的案例。
如果一个py文件中有多个测试案例(方法),而测试时只执行其中的某些,可以通过这一配置实现。
1.2 2-按类名运行
说明:
我们以案例2.py文件为例,如下图。
配置该文件的类并以‘2-按类名运行’则运行时会执行该案例的所有方法(test_baidu_2_search 和 test_baidu_3_search)。
如果一个py文件中有多个测试案例(方法),并需要全部执行,可以通过类名配置运行。
1.3 3-按路径运行
说明:
当前…\Project_Selenium\test 下的目录文件结构如下:
---->.\test---->\测试集_1---->测试集1_案例1_zhaopin_1.py---->案例_1.py---->案例_2.py---->案例_3.py---->案例_4.py---->案例_5.py
若按照路径配置运行时,例如配置“\test\”,执行时会先执行当前目录下的文件(案例_1.py到案例_5.py),然后再执行当前目录中文件夹下的其他案例(测试集_1下的测试集1_案例1_zhaopin_1.py)。
2 路径
说明:
1.路径务必为相对路径
2.以项目中案例目录(test)为起始目录
示例:
test\directory1\directory2
3 文件名
说明:
此处输入测试用例的文件名,包含后缀。
示例:
案例_1.py
4 类名
说明:
文件中定义的类名,区分大小写
5 方法名
说明:
类中定义的方法名,区分大小写
6 是否执行
说明:
N-不执行
Y-执行
7 场景描述
说明:
描述场景
8 说明
1.3.3 测试计划配置.xlsx
目录:
…\Project_Selenium\config\测试计划配置.xlsx
配置说明:
如下表格为<测试计划配置.xlsx>的配置样式
顺序执行 文件名 是否执行 说明
1 1-测试案例运行配置.xlsx Y 执行前准备2 2-测试案例运行配置.xlsx Y 并发执行_13 3-测试案例运行配置.xlsx Y 并发执行_24 3-测试案例运行配置.xlsx Y 执行后处理
1 顺序执行
说明:
组织《测试案例运行配置.xlsx》的运行顺序。
运行时会按照案例顺序从上往下执行。
2 文件名
说明:
配置…\Project_Selenium\config\路径下“测试案例运行配置.xlsx”的文件名包含后缀格式。
3 是否执行
说明:
N-不执行
Y-执行
二、日志(log)
2.1 说明
自动化运行时记录并保存日志为log.log文件
自动保存截图照片文件,文件格式为YYYMMDD-hh24mmss.png,截图方法在Driver类中会
介绍
所在路径:
…\Project_Selenium\log
三、数据(data)
3.1 说明
1.支持对.csv、.xlsx 格式的数据文件读写,可以将测试数据维护在此目录。
所在路径:
…\Project_Selenium\data
3.2 读写方法
示例文件:
登录名 密码 是否通过
张三 password N李四 password Y
Excel/CSV读def readExcel(self, path: str, column=1, row=1, sheet=1):"""读取Excel某一单元格数据:param path: Excel路径 type=str:param sheet: 第几个sheet页或sheet页名称 type=int or str:param row: 行数 type=int:param column: 列数或列字段名 type=int or str:return: 单元格的值"""def readCsv(self, path: str, column=1, row=1, fields=True):"""说明:读取csv某一单元格数据注意:文件编码建议使用utf-8:param path: csv文件路径 type=str:param row: 行数 type=int:param column: 字段名或列数 type=str or int:param fields: csv文件第一行是否是字段:return: 单元格值"""
获取指定列数和行数的单元格数据
readExcel( path=r”C:\LoginData.xlsx”, column=1, row=1)readCsv ( path=r”C:\LoginData.csv”, column=1, row=1)
获取指定列名和行数的单元格数据
readExcel( path=r”C:\LoginData.xlsx”, column=”登录名”, row=1)readCsv ( path=r”C:\LoginData. csv”, column=”登录名”, row=1)
写入Excel指定单元格数据
:param path: Excel路径 type=str:param row: 行数 type=int:param column: 列数或列字段名 type=int or str:param value: 需要写入的数据 type=str:param sheet: 第几个sheet页或sheet页名称 type=int or str"""def writeCsv(self, path: str, value="", column=1, row=1, fields=True):"""
说明:写入csv指定单元格数据
注意:文件编码建议使用utf-8:param path: csv文件路径 type=str:param value: 需要写入的数据 type=str:param row: 行数 type=int:param column: 字段名或列数 type=str or int:param fields: csv文件第一行是否是字段:return: None"""
示例:
根据指定行列数设置单元格数值readExcel( path=r”C:\LoginData.xlsx” , value=”N” , column=3, row=2)readCsv( path=r”C:\LoginData. csv” , value=”Y” , column=3, row=3)
根据指定列名和行数设置单元格数值readExcel( path=r”C:\LoginData.xlsx” , value=”李四” , column=”是否通过”, row=2)readCsv( path=r”C:\LoginData. csv” , value=”李四” , column=”是否通过”, row=3)
四、驱动(drivers)
4.1 说明
管理浏览器对应的驱动文件。
自动化案例执行时使用的是该目录下的驱动。
所在路径:
…\Project_Selenium\ drivers
五、元素(elements)
5.1 说明
在该目录下编写页面的元素,可以将元素与案例隔离,分别维护。
所在路径:
…\Project_Selenium\ elements
class 首页():输入框 = (By.CSS_SELECTOR, "#kw")确定按钮 = (By.CSS_SELECTOR, "#su")
def setUpClass(cls):cls.driver = Driver("", "chrome")@classmethod # 执行整个TestCase中只调用一次setUp和tearDowndef tearDownClass(cls):cls.driver.quit()def test_baidu_1_search(self):self.driver.getelement((首页.输入框)).clear()self.driver.getelement((首页.输入框)).send_keys("Python")self.driver.getelement(*(首页.确定按钮)).click()
六、报告(report)
6.1 说明
自动化运行结束后生成报告文件,
格式为“ResultReport_YYYYMMDD_hh24mmss.html”
所在路径:
…\Project_Selenium\ report
七、源码(src)
7.1 说明:
该目录为项目源码
所在路径:
…\Project_Selenium\ src
八、测试用例(test)
8.1 说明
该目录为测试用例存放目录
所在路径:
…\Project_Selenium\ test
示例代码:
coding:utf-8import unittestimport timefrom elements.百度 import 首页 # 元素库from src.log import Log # 日志记录功能from src.public import Public # 继承一些公共方法from src.testcasemore import TestCaseMore # 集成扩展unittest.TestCase功能的类from src.newselenium import Driver # 使用经过二次封装的Dirverlogger = Log().getLogger # 创建日志记录对象,记录日志信息通过logger.info logger.error选择不同级别来记录class Test_1(TestCaseMore, unittest.TestCase): # 继承TestCaseMore 和 unittest.TestCase两个类,必填@classmethod # 执行整个TestCase中只调用一次setUpdef setUpClass(cls): # 案例初始化时执行cls.driver = Driver("", "chrome") # 初始化驱动,指定浏览器类型并打开初始url
案例也可单独调试
if name == "main":unittest.main()
九、其他
9.1 .idea
说明:
项目工程配置文件,可以忽略,请勿删除
9.2 tutorial
说明:
自动化框架相关手册和说明
9.3 runtest.bat
说明:
自动化执行bat脚本
9.4 runtest.py
说明:
自动化开始执行py文件
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后:可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试经:一线城市搬砖!又面软件测试岗,5000就知足了…
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
什么样的人适合从事软件测试工作?
那个准点下班的人,比我先升职了…
测试岗反复跳槽,跳着跳着就跳没了…
如果觉得《使用 Python+Selenium + 第三方库实现的简单的 web 自动化测试框架 源码》对你有帮助,请点赞、收藏,并留下你的观点哦!