一.背景

   前段时间接触到HttpRunner自动化测试框架,发现对测试人员代码能力要求极低,用户只需准备好用例脚本即可发起测试,非常方便,故记录一下。

二.安装

  1. 运行环境

    HttpRunner框架基于Python开发语言,可以运行在macOS、Linux、Windows系统平台。

    本文实例均运行于Windows操作系统。

  2. 安装方式

    pip install httprunner

  3. 安装校验

    运行如下命令,若正常显示版本号,则说明 HttpRunner 安装成功。

    hrun -V

三.原理

  1. 基本概念

    • 测试用例

      • 测试用例必须完整独立,每条用例可独立运行

      • 一条用例需要用一个YAML/JSON文件管理

    • 测试步骤

      • 测试用例是测试步骤的有序集合

      • 针对接口测试时,一个测试步骤对应一个API

    • 测试用例集

      • 测试用例集是测试用例的无序集合

      • 集合中的测试用例相互独立,不存在先后依赖关系

    • 测试场景

      • 测试场景和 测试用例集是同一概念,都是 测试用例 的无序集合。

  2. 测试用例组织

    • 测试用例结构

    • Testcase编写

      • YAML/JSON文件的数据存储结构为list of dict形式,其中可能包含一个全局配置项(config)和若干个测试步骤(test)

      • config:作为整个测试用例的全局配置项

      • test:对应单个测试步骤(teststep),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤

    • config详细说明

      • 作用域为整个测试用例

        - config:
        name: demoTestCase
        base_url: http://morse.qa-sh.56qq.com
        variables:
        bd-token: XXXXXXXXXXXXXXX==
        bd-app-uid: XXXXXXXXXXXXXXXXXXXa6c2-1c5119c570e3

    • test详细说明

      • 作用域仅限本身

        - test:
        name: test_three_elec
        request:
        headers:
        bd-app-uid: a365474c-a7e6-4b3d-a6c2-1c5119c570e3
        bd-token: 6fEkwIF8NwKgnpEG1JTTg==
        method: POST
        url: /three_elec/do-check.do
        params:
        name: 蒋xx
        idcard: 511323xxxxxx33092
        mobile: 1818095xxxx

  3. 运行测试

    • 运行单个测试用例文件,并生成一个测试报告文件

      cmd命令框执行:hrun filepath/testcase.yml

    • 运行测试用例集(文件夹内包含多个测试用例文件),并生成一个测试报告文件

      cmd命令框执行:hrun testcases_folder_path

    • 高级功能

      • 可设置用例运行过程中遇到失败时不再继续运行后续用例;

      • 可设置日志打印级别

      • 保存详细运行过程数据

  4. 输出报告

    • 默认运行完测试用例会在当前路径下自动创建reports目录,里面会生成一份html格式的测试报告

    • 高级功能

      • 可自定义测试报告模板样式

      • 可指定报告生成路径

四 实践

  1. 编写YAML格式测试用例

  2. 运行测试用例

  3. 查看测试报告

    点击绿色的log按钮

五 后记

体验了一把下来会发现操作十分简单,只要学会组织测试用例,就能完成API自动化测试。

  本文只是介绍演示了最基本的流程,还有很多功能,例如通过抓包文件转换测试用例,为用例添加校验,参数关联,自定义函数传参等,待后续继续学习。

参考资料:https://cn.httprunner.org/

     https://debugtalk.com/tags/HttpRunner/

最新文章

  1. 从基层容器类看万变不离其宗的JAVA继承体系
  2. UIKit框架之UIEvent
  3. ubuntu环境下使用apt-get配置apache+php+mysql
  4. iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
  5. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
  6. netstat miscellaneousness
  7. IOS lib(.a)库冲突解决办法
  8. MySQL执行存储过程权限
  9. asp.net mvc处理css和js版本问题
  10. LinkedHashMap的实现原理(复习)
  11. grunt + compass
  12. ajax跨域访问的解决方案
  13. [原]Unity3D深入浅出 - 新版粒子系统 (Shuriken)
  14. [TSOI2005]Exhibit
  15. Ext.MessageBox的用法
  16. MVC中的Ajax(AjaxHelper)
  17. elk 发送zabbix告警
  18. 基OOP知识
  19. SlidingMenu源代码导入及错误分析和解决方法
  20. linux odbc连接sql server2014

热门文章

  1. 巨杉Tech | 使用 SequoiaDB 分布式数据库搭建JIRA流程管理系统
  2. 洛谷P1583 魔法照片
  3. SGD 讲解,梯度下降的做法,随机性。理解反向传播
  4. Exception in thread "http-apr-8080-exec-1" java.lang.StackOverflowError
  5. CrystalDecisions.Windows.Forms文件
  6. Laravel 中使用 Laravel-Excel 美化
  7. Unity 坐标系转换
  8. 滑动窗口-洛谷T1866(单调队列)
  9. php设计模式之面向过程实现举报功能实例代码
  10. Java:面向对象的编程语言