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 = [email protected]
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 [email protected]
5.2 address2
说明:
地址2
示例:
address2 = [email protected]
测试案例运行配置.xlsx
目录:
…\Project_Selenium\config\测试案例运行配置.xlsx
配置说明:
如下表格为<测试案例运行配置.xlsx>的配置样式(Sheet页)
配置方式 路径 文件名 类名 方法名 是否执行 场景描述 说明
按方法运行 test 案例_1.py Test_1 test_baidu_1_search Y
按方法运行 test 案例_2.py Test_2 test_baidu_2_search Y
按方法运行 test 案例_2.py Test_2 test_baidu_3_search N
按类名运行 test 案例_2.py Test_2 - Y
按路径运行 \test\测试集_1\ - - - Y
按路径运行 \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>的配置样式
顺序执行 文件名 是否执行 说明
测试案例运行配置.xlsx Y 执行前准备
测试案例运行配置.xlsx Y 并发执行_1
测试案例运行配置.xlsx Y 并发执行_2
测试案例运行配置.xlsx Y 执行后处理
1 顺序执行
说明:
组织《测试案例运行配置.xlsx》的运行顺序。
运行时会按照案例顺序从上往下执行。
2 文件名
说明:
配置…\Project_Selenium\config\路径下“测试案例运行配置.xlsx”的文件名包含后缀格式。
3 是否执行
说明:
N-不执行
Y-执行
2.1 说明
自动化运行时记录并保存日志为log.log文件
自动保存截图照片文件,文件格式为YYYMMDD-hh24mmss.png,截图方法在Driver类中会介绍
所在路径:
…\Project_Selenium\log
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)
4.1 说明
管理浏览器对应的驱动文件。
自动化案例执行时使用的是该目录下的驱动。
所在路径:
…\Project_Selenium\ drivers
5.1 说明
在该目录下编写页面的元素,可以将元素与案例隔离,分别维护。
所在路径:
…\Project_Selenium\ elements
class 首页():
输入框 = (By.CSS_SELECTOR, "#kw")
确定按钮 = (By.CSS_SELECTOR, "#su")
def setUpClass(cls):
cls.driver = Driver("https://www.baidu.com", "chrome")
@classmethod # 执行整个TestCase中只调用一次setUp和tearDown
def 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()
6.1 说明
自动化运行结束后生成报告文件,
格式为“
ResultReport_YYYYMMDD_hh24mmss.html”
所在路径:
…\Project_Selenium\ report
7.1 说明:
该目录为项目源码
所在路径:
…\Project_Selenium\ src
8.1 说明
该目录为测试用例存放目录
所在路径:
…\Project_Selenium\ test
示例代码:
coding:utf-8
import unittest
import time
from elements.百度 import 首页 # 元素库
from src.log import Log # 日志记录功能
from src.public import Public # 继承一些公共方法
from src.testcasemore import TestCaseMore # 集成扩展unittest.TestCase功能的类
from src.newselenium import Driver # 使用经过二次封装的Dirver
logger = Log().getLogger # 创建日志记录对象,记录日志信息通过logger.info logger.error选择不同级别来记录
class Test_1(TestCaseMore, unittest.TestCase): # 继承TestCaseMore 和 unittest.TestCase两个类,必填
@classmethod # 执行整个TestCase中只调用一次setUp
def setUpClass(cls): # 案例初始化时执行
cls.driver = Driver("https://www.baidu.com", "chrome") # 初始化驱动,指定浏览器类型并打开初始url
案例也可单独调试
if name == "main":
unittest.main()
9.1 .idea
说明:
项目工程配置文件,可以忽略,请勿删除
9.2 tutorial
说明:
自动化框架相关手册和说明
9.3 runtest.bat
说明:
自动化执行bat脚本
9.4 runtest.py
说明:
自动化开始执行py文件