3. 配置文件
示例¶
# config.yaml
server:
# 本地接口服务
test: http://127.0.0.1:8888/
dev: http://127.0.0.1:8888/api/private/v1/
# 基准的请求头信息
request_headers:
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
# 相对于run.py
file_path:
# 用例数据路径
test_case: case_data.xls
# 报告生成路径
report: report/
# 日志文件路径
log: logs/run{time}.log
email:
# 邮箱账号配置
serve:
# 发件人邮箱USER
user: 123456@163.com
# 发件人邮箱授权码
password: xxxx
# 邮箱host
host: smtp.163.com
# 邮件内容配置
context:
contents: 解压apiAutoReport.zip(接口测试报告)后,请使用已安装Live Server 插件的VsCode,打开解压目录下的index.html查看报告
# 收件人邮箱
to: ["396667207@qq.com"]
subject: 接口自动化测试报告(见附件)
# 附件
attachments: report.zip
# 数据库校验- mysql
database:
# 数据库地址
host: localhost
# 数据库端口
port: 3306
# 数据库用户名
user: root
# 不用''会被解析成int类型数据, 数据库密码
password: '123456'
# 数据库名称
db: mydb
# 数据库所在的服务器配置,用于备份/还原数据文件,达到数据清洗
ssh_server:
port: 22
username: root
password: '123456'
# 私有密钥文件路径
private_key_file:
# 私钥密码
private_password:
# 如果使用的docker容器部署mysql服务,需要传入mysql的容器id/name
mysql_container: mysql8
# 数据库备份文件导出的本地路径, 需要保证存在该文件夹
sql_data_file: backup_sql/
server¶
最终请求地址 = 基准地址 + 用例接口地址
服务的基准地址(个人理解多个接口都有的共同部分内容),默认使用的是dev
修改环境- core.py
...
@property
def path(self):
return self._path
@path.setter
def path(self, value):
# self.config.get_config("$.server.test") 使用test的 基准地址
self.config.get_config("$.server.dev")
self._path = f"{self.config.current}{DataProcess.rep_expr(value)}"
...
request_headers¶
最终请求头 = 基准请求头 + 用例中的请求头
基准请求头,即为默认所有接口都会使用的基础请求头数据
file_path¶
此处的路径是相对run.py
的路径
指定用例文件地址,报告生成地址,log保存地址
email¶
通过 python run.py
运行(jenkins集成可忽略), 修改run.py
...
if __name__ == "__main__":
run(email=True)
...
database¶
只支持mysql数据库, 使用时,test_main.py
...
def test_start(case, get_db): # 只使用数据库操作
"""
测试启动方法, 当需要使用 数据清洗和 数据库操作命令时将 get_db 换成 clear_db
如只需要使用 数据库操作 则添加get_db 参数, 如一个都不需要则不添加
:param case: 用例
:return:
"""
# 前置处理
title, skip, header, path, method, data_type, file, data, extra, sql, expect = case
ReportStyle.title(title)
data_process.handle_case(path, header, skip, data, file)
# 发送请求
http_client.send_request(
data_type,
method,
data_process.path,
data_process.headers,
data_process.body,
data_process.files,
)
# 后置处理
DataProcess.handle_extra(extra, http_client.response.json())
data_process.sql = sql
data_process.handle_sql(get_db) # 使用数据库
# 断言
DataProcess.assert_result(http_client.response.json(), expect)
...
ssh_server¶
数据隔离操作, 使用时, test_main.py
def test_start(case, clear_db): # 使用数据库操作 及 数据清洗
"""
测试启动方法, 当需要使用 数据清洗和 数据库操作命令时将 get_db 换成 clear_db
如只需要使用 数据库操作 则添加get_db 参数, 如一个都不需要则不添加
:param case: 用例
:return:
"""
# 前置处理
title, skip, header, path, method, data_type, file, data, extra, sql, expect = case
ReportStyle.title(title)
data_process.handle_case(path, header, skip, data, file)
# 发送请求
http_client.send_request(
data_type,
method,
data_process.path,
data_process.headers,
data_process.body,
data_process.files,
)
# 后置处理
DataProcess.handle_extra(extra, http_client.response.json())
data_process.sql = sql
data_process.handle_sql(clear_db) # 使用数据清洗及 数据库
# 断言
DataProcess.assert_result(http_client.response.json(), expect)