综合前置接口报文规范_浅谈用HttpRunner进行接口自动化测试

在参与我们测试平台开发的时候,结识了HttpRunne这个优秀的开源接口测试框架,初步研究发现HttpRunner可以非常方便、非常高效地实现接口自动化测试。

01 HttpRunner和常用接口测试框架对比

d540e1b8d30d7a1cb88872eabdc58bdf.png

02 HttpRunner的用例分层结构

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,通过编写和维护一份YAML/JSON脚本,即可实现接口自动化测试。

测试用例集:对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件测试用例:对应一个 YAML/JSON 文件,包含单个或多个测试步骤测试步骤:对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果。

2.1测试集数据结构

## 这个list相当于一个测试用例集或者测试用例

[

  { "config": {...}},

  { "test": {...}                     ## 这个test就是一个测试步骤 },

  { "test": {...} }

]

2.2 config数据结构

{

   ‘name’: ‘testName’,  ## 必填,测试用例的名称,测试报告会以此作为标题

   ‘parameters’: [] , ## 非必填,全局参数,作用域为整个测试用例

   ‘variables’: [],   ## 非必填,全局变量,作用域为整个测试用例

   ‘request’: {       ## 非必填,请求配置    

        ‘base_url’:’http://’,

        ‘headers’: {

            ‘Content-Type’: ‘application/json’}

    }        

}

2.3 test数据结构

{

    ‘name’: "test",                ##必填,测试步骤名称

    ‘request’: {                     ## 必填,测试步骤request信息

        ‘method’: "POST",

         'files': {},

'data': {},

'headers': {},

'url': 'http:// ',

'params': {},

         ‘json’: {},

}

'setup_hooks': [],        ##前置操作

'teardown_hooks': [], ##后置操作

        ‘extract’: [           ##提取参数保存,以便后面测试步骤使用

            { 'uploadCode':'content.code'}

        ],

        ‘validate’: [                   ## 对当前测试结果的校验

'string_equals': ['content.code','200']

        ],

    }

}

03 测试平台对接HttpRunner

3.1 通过UI实现测试用例的编写和运行

在测试平台中为了方便用户快速设计接口测试用例,将HttpRunner的用例结构方式实现了UI,后端再进行封装成JSON格式,交给HttpRunner进行执行。

2fd5564f0b24be193c192df94c6eaa3f.png

另外,接口测试常常会涉及接口调用前准备工作和接口调用后验证工作,所以测试平台引入了HttpRunner高效的hook机制。前置和后置都实现了多数据源的操作以及灵活的自定义函数。后端将前置数据源实现以及自定义的函数都放到setup_hooks中,后置数据源实现以及自定义函数放到teardown_hooks中。同时后置数据源实现的函数形参都引用了接口返回response,然后将需要验证的数据源查询结果可以放到response,以便在断言中可以进行验证处理。

2ac0952538bd510dbb5b6a18e37d948d.png

考虑到测试用例复用性,数据源查询支持参数化。对于普通参数,我们将该类参数格式规范成$parameter,进入hook机制前将SQL中的参数进行参数映射。对于接口返回值作为参数(只出现在后置数据源),我们将该类参数格式规范成{response.json[][]..},其中response作为teardown_hooks中函数形参,在函数中将字符串response.json[][]..转成对象即可拿到接口返回值,再执行相应的SQL语句。

02acf07a5ec32cdb1ebc5459b37e9468.png

断言是测试用例设计的关键所在,目前平台支持多种验证方式和多种数据类型,接口返回值验证,数据源查询结果验证,函数执行结果验证等验证方式,String,int,float,dict,NoneType等数据类型。

00ca10ed965604d9a66a2fb27f29be8d.png

3.2优化测试结果排序,高亮报错用例

测试计划执行结束后会生成测试数据,对其进行重排序,将错误的测试用例前置高亮,这样就可以优先看到有问题的用例。测试报告是html形式,支持定制化。

22c15cb07b69e9264ce50aaf7b17392e.png

04 总结

引入HttpRunner框架后,我们在测试平台上已经接入了95%以上的接口测试需求,总计10000多个接口测试用例,平均每天接口用例执行次数达到1000以上。通过测试平台实现了测试计划、测试用例管理和测试用例执行以及测试报告一体化,非常有效地提升了整个团队的测试效率和质量。

对于未来,我们准备持续优化HttpRunner和测试平台的集成,支持更多种方式的测试用例编写和执行,引进数据驱动方式,实现参数化循环执行测试用例,其包括3种方式: 

1、直接指定关联参数列表;

2、引用CSV文件定义关联参数;

3、引用自定义函数定义关联参数。

1cf80e1ba9f258978aa466915c55b60f.png

fe1d06f7776b1fa8caeef53399a7855f.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值