zoukankan      html  css  js  c++  java
  • HttpRunner接口自动化测试框架

    简介

    2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业余时间研究这个框架去实现接口自动化测试。

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

    主流接口自动化工具框架:

    从上图可知,技术选型一般会优先考虑Requests+Python和HttpRunner,Requests+Python在自动化测试总结分类里面有文章讲过,这里我们针对HttpRunner进行探索。

    框架流程

    主要特性:

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

     环境安装:

    HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS、Linux、Windows 系统平台上。HttpRunner 支持 Python 3.4 及以上的所有版本,推荐建议使用 Python 3.4 及以上版本。

    使用pip命令安装:pip3 install httprunner  【因本人环境装有python两个版本,这里使用是python3.6版本,就使用pip3命令,如是python2.7版本的话,就用pip命令安装】

    安装完成后校验:


    如版本号正常显示,则说明安装正常。

    基础功能

      1、 录制生成用例

    在转换生成测试用例之前,需要先将抓取得到的数据包导出为 HAR 格式的文件。使用Charles抓包工具 Proxy中的操作方式为,选中需要转换的接口(可多选或全选),点击右键,在悬浮的菜单目录中点击【Export...】,格式选择HTTP Archive(.har)后保存即可;假设我们保存的文件名称为test.har

     转换测试用例

    在命令行终端中运行 har2case 命令,即可将 test.har 转换为 HttpRunner 的测试用例文件。 使用 har2case 转换脚本时默认转换为 JSON 格式

    加上 -2y/--to-yml 参数后转换为 YAML 格式

    两种格式完全等价,YAML 格式更简洁,JSON 格式支持的工具更丰富,大家可根据个人喜好进行选择。

    生成后的用例如下图所示:

    json格式:

    YAML格式:

    • config:作为整个测试用例集的全局配置项
    • test:对应单个测试用例
    • name 这个test的名字
    • request 这个test具体发送http请求的各种信息, 如下:
    • url 请求的路径 (若config中有定义base_url, 则完整路径是用 base_url + url )
    • method 请求方法 POST, GET等等
    • data 传入参数值
    • validate 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

      2、运行测试

    若希望测试用例在运行过程中,遇到失败时不再继续运行后续用例,则可通过在命令中添加--failfast实现。如:hrun test.yaml --failfast

    若需要查看到更详尽的信息,例如请求的参数和响应的详细内容,可以将日志级别设置为DEBUG,即在命令中添加--log-level debug。如:hrun test.yaml --log-level debug

    为了方便定位问题,运行测试时可指定 --save-tests 参数,即可将运行过程的中间数据保存为日志文件。

    日志文件将保存在项目根目录的 logs 文件夹中,生成的文件有如下三个(XXX为测试用例名称):

    • XXX.loaded.json:测试用例加载后的数据结构内容,加载包括测试用例文件(YAML/JSON)、debugtalk.py、.env 等所有项目文件,例如 test-quickstart-6.loaded.json
    • XXX.parsed.json:测试用例解析后的数据结构内容,解析内容包括测试用例引用(API/testcase)、变量计算和替换、base_url 拼接等,例如 test-quickstart-6.parsed.json
    • XXX.summary.json:测试报告生成前的数据结构内容,例如 test-quickstart-6.summary.json

      3、测试报告

    默认情况下,生成的测试报告文件会位于项目根目录的 reports 文件夹中,文件名称为测试开始的时间戳。HttpRunner 中自带了一个 Jinja2 格式的默认报告模版

    测试报告形式如下:

    在 Summary 中,会罗列本次测试的整体信息,包括测试开始时间、总运行时长、运行的Python版本和系统环境、运行结果统计数据。

    在 Details 中,会详细展示每一条测试用例的运行结果。

    点击测试用例对应的 log 按钮,会在弹出框中展示该用例执行的详细数据,包括请求的 headers 和 body、响应的 headers 和 body、校验结果、响应、响应耗时(elapsed)等信息。

    默认情况下,生成的测试报告文件会位于项目根目录的 reports 文件夹中。如需指定生成报告的路径,可以使用 --report-dir 参数。

    如: hrun test.yaml --dirreport-name g:home

    其它高级特性如数据参数化、用例分层、环境变量等用法请参考官网中文手册详细介绍。

      4、创建项目

    使用方式也与Django类似,只需要通过--startproject指定新项目的名称即可。如:hrun --startproject httpapidemo

    运行后,就会在指定的目录中生成新项目的目录结构,接下来,我们就可以按照测试用例的接口-模块-场景分层原则往里面添加用例描述信息了。

    需要注意的是,我们在组织测试用例描述的文件目录结构时,遵循约定大于配置的原则:

    • API接口定义必须放置在api目录下
    • 模块定义必须放置在suite目录下
    • 测试场景文件必须放置在testcases目录下
    • 相关的函数定义放置在debugtalk.py

    具体新增用例目录结构例子如下:

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/yinjia/p/10415920.html
Copyright © 2011-2022 走看看