httprunner3.0接口测试框架说明文档

一、接口自动化测试框架

二、项目

2.1 配置层

2.1.1 环境变量:通过加载.env的方式

建议数据库相关配置、base_url、常用用户数据等配置在环境变量中

  1. 在自动化测试项目的根目录中,创建 .env 文件,将敏感数据信息放置到其中,存储采用 name=value 的格式
    DB_HOST=×××
    DB_USER=×××
    DB_PASSWORD=×××
    USERNAME=×××
    BASE_URL=×××
  2. 引用方式分为两种,一种是直接在yaml中引用,一种在debugtalk.py中引用
    # 直接在yaml中引用
    config:
        name: ×××
        variables:
            username: ${ENV(USERNAME)}
        base_url: ${ENV(BASE_URL)}
    
    teststeps:
        -   name: checkUserRole
            request:
                json:
                    oaAccount: $username
                method: POST
                url: ×××
# 配置在debugtalk中
def base_url():
    """
    base_url
    :return:
    """
    return os.environ['BASE_URL']

2.1.2 测试数据

秉持维护成本最小的原则,测试数据要与测试用例分离,后续如果接口api不发生变化,直接修改测试数据即可

  1. 测试数据可以和测试用例分开存放,测试用例放在testcase下,测试数据建议放在testdata下
  2. 测试数据建议通过redis、数据库或者上下级用例关联获取,不要写死

2.2 用例层

官方文档给出的用例模板如下所示,建议在此基础上进行优化,按照数据分离的原则,参数化配置用例,维护成本越小越好

config:
    name: xxx
    variables:              # config variables
        varA: "configA"
        varB: "configB"
        varC: "configC"
    parameters:             # parameter variables
        varA: ["paramA1"]
        varB: ["paramB1"]

teststeps:
-
    name: step 1
    variables:              # step variables
        varA: "step1A"
    request:
        url: /$varA/$varB/$varC # varA="step1A", varB="paramB1", varC="configC"
        method: GET
    extract:                # extracted variables
        varA: body.data.A   # suppose varA="extractVarA"
        varB: body.data.B   # suppose varB="extractVarB"
-
    name: step 2
    varialbes:
        varA: "step2A"
    request:
        url: /$varA/$varB/$varC # varA="step2A", varB="extractVarB", varC="configC"
        method: GET

优化后:

config:
    name: xxx
    base_url: ${base_url()}           # 为方便后续多环境配置
    variables:
        varA: "configA"                  # 建议此处的数据通过debugtalk.py读取,不要写死

teststeps:
-   name: xxx
    request:
        method: POST
        url: xxx
        json:
          field: $varA
    setup_hooks:
        - ${headers($request)}           # 建议此处的数据通过debugtalk.py读取,方面后续灵活配置
    extract:                # 提取返回结果
        varB: body.data.B      # suppose varB="extractVarB"
    validate:                                # 断言
        -   eq: ["status_code", 200]
        -   eq: [json.code, "200"]
        -   eq: [json.message, 查询成功]

-   name: step 2
    varialbes:
        varA: "step2A"
    request:
        url: /$varA/$varB/$varC # varA="step2A", varB="extractVarB", varC="configC"
        method: GET
    validate:                                # 断言
        -   eq: ["status_code", 200]

2.3 测试报告

2.3.1 pytest内置html测试报告

使用方法: --html=path create html report file at given path.

# 终端执行
hrun testcases --html==/report/0422.html                     

 

2.3.2 allure测试报告

终端执行

hrun testcases --alluredir=allure_results
allure generate --clean   allure_results -o report/html

或者创建run.py文件

# _._ coding: utf-8 _._

import subprocess

subprocess.call("hrun testcases --alluredir=allure_results", shell=True)
subprocess.call("allure generate --clean   allure_results -o report/html", shell=True)

 

三、最后附上项目的目录结构图及说明

 

作者:gz_tester
链接:https://www.jianshu.com/p/73f426e59c66
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:gz_tester
链接:https://www.jianshu.com/p/73f426e59c66
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值