接口自动化测试之HttpRunner测试框架介绍和快速入门

引言

接口自动化测试的实现方案有很多,没有编程基础的可以使用 Postman+Newman 或 Jmeter+Ant 来实现,有编程基础的则可以结合自动化测试框架来实现。基于Python的测试框架有:Unittest、HttpRunner、Robot Framework、Pytest等,本文主要是讲解HttpRunner,是当下比较流行且实用的框架,可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
注:
本文篇幅较长,主要是展示了HttpRunner的框架特性,流程、结构,用例组织和快速上手教程。如果消化了本文的内容,基本上可以入门了,接下来就是需要不断的大量实践了

一、HttpRunner的介绍

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

二、HttpRunner的设计理念

1、追求不重复造轮子
2、遵循 约定大于配置 的准则
3、追求投入产出比

三、HttpRunner的核心特性

1、继承 Requests 的全部特性
2、采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
3、借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
4、支持完善的测试用例分层机制,充分实现测试用例的复用
5、测试前后支持完善的 hook 机制
6、响应结果支持丰富的校验机制
7、基于 HAR 实现接口录制和用例生成功能(har2case)
8、结合 Locust 框架,无需额外的工作即可实现分布式性能测试
9、执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
10、测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
11、极强的可扩展性,轻松实现二次开发和 Web 平台化

四、HttpRunner的框架流程

在这里插入图片描述

五、HttpRunner快速上手

1、环境准备

(1)、运行环境:建议使用 Python 3.4 及以上版本
(2)、安装方式:pip install httprunner
(3)、安装校验:打开cmd,输入以下命令进行校验,出现版本号则说明安装成功

C:\Users\luoluo>hrun -V
2.5.7
C:\Users\luoluo>har2case -V
0.3.1

2、脚本录制

为了简化测试用例的编写工作,可以通过抓包工具,如Fiddler、Charles 等进行接口录制,然后导出为标准通用的 HAR 格式(HTTP Archive),再通过 HttpRunner 将 HAR 格式的数据包转换为YAML/JSON格式的测试用例文件,对应的转换工具为:har2case
下面以Fiddler为例,进行脚本录制和导出
操作步骤:
选中需要转换的接口(可多选或全选),点击菜单中的Flie->Export Sessions->Selected session(选择HTTP Archive v1.1类型)保存至本地即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用Charles录制的方法大致相同,操作步骤为:选中需要转换的接口(可多选或全选),点击右键,在悬浮的菜单目录中点击【Export…】,格式选择HTTP Archive(.har)后保存即可

3、脚本生成

(1)、将HAR转换为默认的JSON脚本,转换命令为:har2case filename.har

C:\Users\luoluo\Desktop>har2case test1.har
INFO:root:Start to generate testcase.
INFO:root:dump testcase to JSON format.
INFO:root:Generate JSON testcase successfully: test1.json

(2)、将HAR转换为YAML脚本,转换命令为:har2case -2y filename.har

C:\Users\luoluo\Desktop>har2case -2y test1.har
INFO:root:Start to generate testcase.
INFO:root:dump testcase to YAML format.
INFO:root:Generate YAML testcase successfully: test1.yml

此时可以看到本地已经生成了对应格式的文件
在这里插入图片描述
我们分别来打开看一下里面的内容,由于隐私问题,暂时把实际域名做了修改:
下面代码是.json格式的,

{
   
    "config": {
   
        "name": "testcase description",
        "variables": {
   }
    },
    "teststeps": [
        {
   
            "name": "/api/trend/webinfo/getnavs",
            "request": {
   
                "url": "{
   {HOST}}/api/trend/webinfo/getnavs",
                "params": {
   
                    "gender_id": "72105",
                    "no_cache": "1"
                },
                "method": "GET",
                "headers": {
   
                    "Sec-Fetch-Dest": "empty",
                    "Authorization": "",
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
                    "Content-Type": "application/json;charset=utf-8;",
                    "Sec-Fetch-Site": "cross-site",
                    "Sec-Fetch-Mode": "cors",
                    "If-None-Match": "W/\"9b200f8fd6b4e23ffd2c77a44e50ba275fdb123c\""
                }
            },
            "validate": [
                {
   
                    "eq": [
                        "status_code",
                        200
                    ]
                },
                {
   
                    "eq": [
                        "headers.Content-Type",
                        "application/json"
                    ]
                },
                {
   
                    "eq": [
                        "content.status_code",
                        200
                    ]
                },
                {
   
                    "eq": [
                        "content.message",
               
  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值