一.背景

   前段时间接触到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/

初识HttpRunner的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. day30 NFS服务器概述

    02. NFS存储服务概念介绍 NFS是Network File System的缩写,中文意思是网络文件共享系统, 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 存储服 ...

  2. 【Node】Webpack调试启动

    "start": "webpack-dev-server --port 33333 --content-base ./dist",

  3. Django 初试水(一)

    2020年注定是一个不平凡的一年!坚持就是胜利,一起加油! 至于为什么使用 Django,也不想说太多.个人喜欢,这里不做介绍.直接进入主题.show me the code!!! python 的环 ...

  4. layer iframe 设置关闭按钮 和刷新和弹出框设置

    layer弹出层的关闭问题   就是在执行添加或修改的时候,需要将数据提交到后台进行处理,这时候添加成功之后最理想的状态是关闭弹出层并且刷新列表的数据信息,之前一直想实现这样,可一直没有成功,今天决定 ...

  5. centos7 tar.gz zip 解压命令

    tar负责打包,gzip负责压缩 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个, ...

  6. [CCPC2019秦皇岛] F. Forest Program

    [CCPC2019秦皇岛 F] Link https://codeforces.com/gym/102361/problem/F Description 给定一个仙人掌,删去一些边可以让它变成一个森林 ...

  7. 最新python面试题

    1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 3.列出5个python标准库 os:提供了不少与操作系统相关联的函数 s ...

  8. Mybatis学习笔记——输入参数parameterType、Mybatis调用存储过程

    输入参数:parameterType(两种取值符号) 1.类型为简单类型 区别:     (1) #{可以为任意值}         ${vaue}--->标识符只能是value     (2) ...

  9. .net_DevExpress控件使用经验总结

    (转)DevExpress控件使用经验总结DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或 ...

  10. 文件分割合并DOS版

    这个从163邮箱里翻出来的程序,2004年的修改日期,放这另存一下. 当时拿了一本C++的书来学,学了一阵就琢磨着做一个东东,然后就想起一个以前印象深刻的软件,叫做笨笨狗分割器. 当时主要还是靠3.5 ...