Skip to content

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)