浅谈HttpRunner 做Http接口自动化测试

HttpRunner 框架

简介

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求 【引用作者简述

相关链接
框架对比
框架 最新版本 开发语言 支持语言 持续集成 拓展难度 性能测试 数据分离 推广门槛 其它特性
Robot Framework 3.1.2 python python/java 不支持 支持 自带wx的GUI,可支持界面化或命令操作,可支持web UI自动化seleniumLibrary
HttpRunner 2.0 python python 支持 支持 脚本化、有完善易阅读报告输出
Jmeter 5.1.1 java java 支持 支持 更偏向于接口性能;做功能测试,用例维护管理难

HttpRunner 模块化架构

浅谈HttpRunner 做Http接口自动化测试

关于HttpRunner框架详情,在此不做过多介绍,本次内容主要以实战为主

HttpRunner 环境安装

因 python2.7版本已停止更新,不在维护,大部分相关开源项目与库已不再对 python2.x 版本的支持,所以此处用 Python3.6 + HttpRunner 1.5.15 搭建环境

起步:

  • pip install -r requirements.txt

requirements.txt

HttpRunner == 1.5.15
Jinja2 == 2.10
PyMySQL == 0.9.3   # 非必需安装,因个人项目中涉及到数据库操作
SQLalchemy == 1.3.4  # 非必需安装,因个人项目中涉及到数据库ORM操作

HttpRunner环境搭建验证

  • hrun -v 【使用CLI验证】
  • pip list 【通过pip list查看】

CLI 命令 hrun用法

  • hrun --startporject projectName 创建工程
  • hrun testcase/demo.yml 运行case
  • 其它详见 hrun -h

HttpRunner 常用关键字

  • name:用例名称
  • variables :定义变量
  • extract :提取返回结果
  • validate: 结果效验
  • content 返回结果
  • eq 效验
  • setup_hooks() 钩子函数,类似于unnitest 的setUp() 执行用例前环境准备
  • teardown_hooks() 钩子函数,类似于unnitest的teardown() 用例执行后环境初始化操作

实战

具体以 当前使用的项目为例

用HttpRunner 搭建接口自动化框架概况
浅谈HttpRunner 做Http接口自动化测试
工程结构
浅谈HttpRunner 做Http接口自动化测试
Api模板注册 Basic.yml
# 登陆 login
- api:
    def: get_token($password, $sign, $timestamp, $userAccount)
    request:
        url: /test/login
        method: POST
        json:
            password: $password
            timestamp: $time_sign
            userAccount: $userAccount
            sign: $sign

# 用户信息获取
- api:
    def: get_userInfo($sign, $timestamp, $token)
    request:
        url: /test/userInfo
        method: POST
        json:
            sign: $sign
            timestamp: $time_sign
            token: $token

用例编写 test.yml
 - config:
     name: 验证用户信息获取接口
     request:
         base_url: $server
         headers: $m_headers
     variables:
       userAccount: '15989556891'
       password: ${get_pwd(123456)}
       childIds: '11027897,11029010'
     validate:
         - eq: [status_code, 200]
 - test:
     name: 获取 token
     api: get_token($password,$sign,$timestamp,$userAccount)

 - test:
     name: case 01 验证token错误时,返回是否正确
     variables:
       token: 'sfsd12'
     api: get_userInfo($sign,$timestamp,$token)
     extract:
       - code: content.code
       - msg: content.errorMsg
     validate:
       - eq: ['$code', '00600010006']
       - eq: ['$msg', '无效的token']

 - test:
     name: case 02 验证token过期,返回是否正确
     variables:
       token: 616383b06cbf8ce4d392ff4523670058000050900
     api: get_userInfo($sign,$timestamp,$token)
     extract:
       - code: content.code
       - msg: content.errorMsg
     validate:
       - eq: ['$code', '00200010006']
       - eq: ['$msg', 'token已过有效期']
 - test:
     name: case 03 token有效,正常获取用户信息,返回是否正确
     api: get_userInfo($sign,$timestamp,$token)
     extract:
       - code: content.code
       - data: content.data
     validate:
       - eq: ['$code', '000']
       - eq: ['$data', '返回数据内容']
HttpRunner 结果报告 Report.html
浅谈HttpRunner 做Http接口自动化测试
报告拓展 -> 邮件报告
浅谈HttpRunner 做Http接口自动化测试
报告拓展 -> 钉钉机器人提醒
浅谈HttpRunner 做Http接口自动化测试
上一篇:Linux Shell中的IF语句知识整理


下一篇:WGAN