• 售前

  • 售后

热门帖子
入门百科

利用 Python+Selenium + 第三方库实现简朴的web自动化测试框架 源码

[复制链接]
眠眠不觉量 显示全部楼层 发表于 2022-8-11 13:13:56 |阅读模式 打印 上一主题 下一主题
一、设置(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@outlook.com

4.3 SMTPLoginPasswd
分析:
SMTP服务器登录暗码
示例:
SMTPLoginPasswd = 12345678

4.4 senderAddress
分析:
发件地点
示例:
senderAddress = zhangsan @outlook.com

4.5 SMTPServerAddress
分析:
SMTP服务器地点
示例:
SMTPServerAddress = smtp-mail.outlook.com

4.6 SMTPPort
分析:
SMTP服务器地点端口
示例:
SMTPPort = 587

4.7 emailTitle
分析:
邮件主题
示例:
emailTitle = Web自动化测试陈诉邮件

4.8 emailText
分析:
正文内容
示例:
具体测试陈诉请检察附件...

5 [receiversAddress]
分析:
收件地点 可设置多个
注意:
选项名不能重复

5.1 address1
分析:
地点1
示例:
address1 =123456789@qq.com

5.2 address2
分析:
地点2
示例:
address2 = zhangsan@outlook.com

测试案例运行设置.xlsx
目次:
…\Project_Selenium\config\测试案例运行设置.xlsx
设置分析:
如下表格为的设置样式(Sheet页)
设置方式 路径 文件名 类名 方法名 是否实行 场景形貌 分析
  1. 按方法运行 test 案例_1.py Test_1 test_baidu_1_search Y    
  2. 按方法运行 test 案例_2.py Test_2 test_baidu_2_search Y    
  3. 按方法运行 test 案例_2.py Test_2 test_baidu_3_search N    
  4. 按类名运行 test 案例_2.py Test_2 - Y    
  5. 按路径运行 \test\测试集_1\ - - - Y    
  6. 按路径运行 \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 下的目次文件结构如下:
  1. ---->.\test
  2. ---->\测试集_1
  3. ---->测试集1_案例1_zhaopin_1.py
  4. ---->案例_1.py
  5. ---->案例_2.py
  6. ---->案例_3.py
  7. ---->案例_4.py
  8. ---->案例_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

设置分析:
如下表格为的设置样式
次序实行 文件名 是否实行 分析
  1. 测试案例运行配置.xlsx Y 执行前准备
  2. 测试案例运行配置.xlsx Y 并发执行_1
  3. 测试案例运行配置.xlsx Y 并发执行_2
  4. 测试案例运行配置.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 读写方法
示例文件:
登录名 暗码 是否通过
  1. 张三 password N
  2. 李四 password Y
复制代码
  1. Excel/CSV读
  2.   def readExcel(self, path: str, column=1, row=1, sheet=1):
  3.     """
  4.           读取Excel某一单元格数据
  5.           :param path: Excel路径 type=str
  6.           :param sheet: 第几个sheet页或sheet页名称 type=int or str
  7.           :param row: 行数 type=int
  8.           :param column: 列数或列字段名 type=int or str
  9.           :return: 单元格的值
  10.         """
  11.   def readCsv(self, path: str, column=1, row=1, fields=True):
  12.         """
  13.           说明:读取csv某一单元格数据
  14.           注意:文件编码建议使用utf-8
  15.           :param path: csv文件路径 type=str
  16.           :param row: 行数 type=int
  17.           :param column: 字段名或列数 type=str or int
  18.           :param fields: csv文件第一行是否是字段
  19.           :return: 单元格值
  20.         """
复制代码
 获取指定列数和行数的单位格数据
  1. readExcel( path=r”C:\LoginData.xlsx”, column=1, row=1)
  2. readCsv ( path=r”C:\LoginData.csv”, column=1, row=1)
复制代码
获取指定列名和行数的单位格数据
  1. readExcel( path=r”C:\LoginData.xlsx”, column=”登录名”, row=1)
  2. readCsv ( path=r”C:\LoginData. csv”, column=”登录名”, row=1)
复制代码
写入Excel指定单位格数据
  1. :param path: Excel路径 type=str
  2. :param row: 行数 type=int
  3. :param column: 列数或列字段名 type=int or str
  4. :param value: 需要写入的数据 type=str
  5. :param sheet: 第几个sheet页或sheet页名称 type=int or str
  6. """
  7. def writeCsv(self, path: str, value="", column=1, row=1, fields=True):
  8. """
复制代码
 分析:写入csv指定单位格数据
  1. 注意:文件编码建议使用utf-8
  2. :param path: csv文件路径 type=str
  3. :param value: 需要写入的数据 type=str
  4. :param row: 行数 type=int
  5. :param column: 字段名或列数 type=str or int
  6. :param fields: csv文件第一行是否是字段
  7. :return: None
  8. """
复制代码
示例:
  1. 根据指定行列数设置单元格数值
  2. readExcel( path=r”C:\LoginData.xlsx” , value=”N” , column=3, row=2)
  3. readCsv( path=r”C:\LoginData. csv” , value=”Y” , column=3, row=3)
复制代码
  1. 根据指定列名和行数设置单元格数值
  2. readExcel( path=r”C:\LoginData.xlsx” , value=”李四” , column=”是否通过”, row=2)
  3. readCsv( path=r”C:\LoginData. csv” , value=”李四” , column=”是否通过”, row=3)
复制代码

四、驱动(drivers)

4.1 分析
管理欣赏器对应的驱动文件。
自动化案例实行时利用的是该目次下的驱动。
所在路径:
…\Project_Selenium\ drivers
五、元素(elements)

5.1 分析
在该目次下编写页面的元素,可以将元素与案例隔离,分别维护。
所在路径:
…\Project_Selenium\ elements
  1. class 首页():
  2. 输入框 = (By.CSS_SELECTOR, "#kw")
  3. 确定按钮 = (By.CSS_SELECTOR, "#su")
复制代码
  1. def setUpClass(cls):
  2. cls.driver = Driver("https://www.baidu.com", "chrome")
  3. @classmethod # 执行整个TestCase中只调用一次setUp和tearDown
  4. def tearDownClass(cls):
  5. cls.driver.quit()
  6. def test_baidu_1_search(self):
  7. self.driver.getelement((首页.输入框)).clear()
  8. self.driver.getelement((首页.输入框)).send_keys("Python")
  9. 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
示例代码:
  1. coding:utf-8
  2. import unittest
  3. import time
  4. from elements.百度 import 首页 # 元素库
  5. from src.log import Log # 日志记录功能
  6. from src.public import Public # 继承一些公共方法
  7. from src.testcasemore import TestCaseMore # 集成扩展unittest.TestCase功能的类
  8. from src.newselenium import Driver # 使用经过二次封装的Dirver
  9. logger = Log().getLogger # 创建日志记录对象,记录日志信息通过logger.info logger.error选择不同级别来记录
  10. class Test_1(TestCaseMore, unittest.TestCase): # 继承TestCaseMore 和 unittest.TestCase两个类,必填
  11. @classmethod # 执行整个TestCase中只调用一次setUp
  12. def setUpClass(cls): # 案例初始化时执行
  13. cls.driver = Driver("https://www.baidu.com", "chrome") # 初始化驱动,指定浏览器类型并打开初始url
复制代码
案例也可单独调试
  1. if name == "main":
  2. unittest.main()
复制代码

九、其他

9.1 .idea
分析:
项目工程设置文件,可以忽略,请勿删除

9.2 tutorial
分析:
自动化框架干系手册和分析

9.3 runtest.bat
分析:
自动化实行bat脚本

9.4 runtest.py
分析:
自动化开始实行py文件
末了在我的QQ技能交换群里整理了我这10几年软件测试生存整理的一些技能资料,包罗:电子书,简历模块,各种工作模板,口试宝典,自学项目等。假如在学习或工作中碰到标题,群里也会有大神资助解答,群号 798478386 ( 备注CaoGenBa555 )
全套软件测试自动化测试教学视频

 300G教程资料下载【视频教程+PPT+项目源码】


全套软件测试自动化测试大厂面经



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作