• 2
  • 2
分享

  框架介绍

  1、HttpRunner

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

  2、Locust

  Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。HttpRunner 通过复用Locust ,可以在无需对 YAML/JSON 进行任何修改的情况下,直接运行性能测试。

  3、 httprunner使用手册

  附httprunner中文使用文档地址:cn.httprunner.org/

  环境安装

  1 安装httprunner:   pip install httprunner==2.2.5

  2 安装har2case:    pip install har2case

  3 检查安装是否成功:hrun -h/-v;har2case -h/-v

  4 安装locust:    pip install locustio

  新增命令

  在 HttpRunner 安装成功后,系统中会新增如下 5 个命令:

  1 httprunner: 核心命令。

  2 hrun: httprunner 的缩写,功能与 httprunner 完全相同。

  3 locusts: 基于 Locust 实现性能测试。

  4 har2case: 辅助工具,可将标准通用的 HAR 格式(HTTP Archive)转换为YAML/JSON格式的测试用例。

  用例生成

  (1)利用fiddler/charles对接口数据进行抓包,将结果导出为XX.har文件。

1-1.png

 1-2.png

  (2)将导出的XX.har文件转化为json文件/yaml文件。

  转化为json文件:har2case  xx.har
  转化为yaml文件:har2case  xx.har   -2y/--to-yml

  (3) 转化成功后的yaml文件如下:

1-3.png

  status_code: 请求的状态码

  headers.Content-Type: 将响应头的内容格式做验证

  content.msg: 响应内容的关键字作为验证

  config: 作为整个测试用例集的全局配置项,包括变量(variables,name)

  test: 对应单个测试用例

  name 这个test的名字(用例的名称)

  request 这个test具体发送http请求的各种信息, 如下:

  url 请求的路径 (若config中有定义base_url, 则完整路径是用 base_url + url )

  method 请求方法 POST, GET等等

  headers: 请求头

  请求体: json格式的数据

  validate(断言): 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

  参数化:

  

testcases:
  -
  name: call demo_testcase with data 1
  testcase: testcases/test_login.yml
  parameters:
  #      username: ["admin1","admin"]
        -username:
          - ["admin1"]
          - ["admin"]

  测试用例(testcase)嵌套testcases

  测试用例集是测试用例的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的。

  如果确实存在先后依赖关系怎么办,例如登录功能和下单功能。正确的做法应该是,在下单测试用例的前置步骤中执行登录操作。

  - config:
     name:order product
  - test:
     name:login
     testcase:testcases/login.yml
  - test:
     name:add to cart
     api:api/add_cart.yml
  - test:
     name:make order
     api:api/make_order.yml

  变量取值:

  在测试用例内部,HttpRunner划分了两层变量空间作用域context。

  ·config:作为整个测试用例的全局配置项,作用域为整个测试用例;

  · test:测试步骤的变量空间context会继承或覆盖config中的定义的内容;

    - 若某变量在config中定义了,在某test中没有定义,则该test会继承该变量

    - 若某变量在config中和某test中都定义了,则该test中使用自己定义的变量值

  · 各个测试步骤test的变量空间相互独立,互不影响;

  · 如需在多个测试步骤test中传递参数值,则需要使用extract关键字,并且只能从前往后传递

  响应头和响应体的提取:

  //response headers:
  {
     “Content - Type”:"application/json",
     “Content - Length”:69
  }
  //response body:
  {
      “success”:false,
       “person”:{
           "name":{
            “first_name”:"cs",
            “last_name”:"css",
       },
        “age”:29,
        “cities”:["Guangzhou","Shenzhen"]
       }
  }

  那么对应的字段提取方式就为:

  “headers.content-type”=>"application/json"
  “headers.content-length”=>69
  “body.success"/"content.success"/"text.success=>false
  "content.person.name.first_name"=>"cs"
  "content.person.age"=>29
  "content.person.cities"=>["Guangzhou","Shenzhen"]
  "content.person.cities.0"=>"Guangzhou"
  "content.person.cities.1"=>"Shenzhen"

  可以看出,通过点( . )运算符,我们可以从上往下逐级定位到具体的字段:

  · 当下一级为字典时,通过.key来指定下一级的节点,例如.person,指定了content下的person节点;

  · 当下一级为列表时,通过.index来指定下一级的节点,例如.0,指定了cities下的第一个元素。

  提取HTML的内容(正则表达式)

1-4.png

  上传文件场景

1-5.png



作者:软件测试自动化测试    

来源:http://www.51testing.com/html/37/n-4479437.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •    51testing软件测试圈报告征文活动已经结束啦,感谢各位的参与。   本次更文活动时间从2023年4月1日到2023年5月19日!   获奖名单   恭喜:斌宇、Carl_奕然、九哥,各获得测试书籍一本。   请获奖用户3个工作日内联系恬恬圈或天天圈领取奖励!   点击右侧可查看本期更文活动全部文章:“报告征文”   你是否想过我们软件测试行业现状是什么样子的?从未来的趋势来看,我们又该如何规划自己的职业发展道路呢?  《2022软件测试行业现状调查报告》,凝聚了行业内各方精英的心血和汗水,致力于为大家呈现行业现状、趋势和未来发展方向。  本次征文活动,旨在激发测试行业从业者的思考和...
            0 0 4635
            分享
          •   版权声明:本文作者 优测团队测试专家 郑凯泽 南明玮。 探索性测试是对常规的系统测试、新需求测试及专项测试的重要补充,往往能在短时间内发现更多的问题,一起来看看优测测试专家的分享吧~  一、背景 优测团队长期承接腾讯社交产品、办公产品,如大家所熟知的腾讯文档、QQ等产品的测试服务工作。在用户规模日益增长的背景下,探索性测试是对常规的系统测试、新需求测试及专项测试的重要补充。 经实践验证,该方法可在短时间内发现更多的问题,通过新的思路、新的方法,找到在系统测试阶段未发现的“漏网之鱼”。 二、探索策略 1...
            0 0 1219
            分享
          • 写测试用例的时候,不能想到什么就写什么,要按照一定的测试用例模板去写,要有自己的思路,不能完全去套用模拟以前的测试用例,按照一整套的测试流程来分析重要的关注点,时间长也会有自己积累的一套的测试模式,按照框架的思路,可能会达到事半功倍的效果哦!功能测试框架一般情况就是包含以下几类:界面友好性测试、功能测试、页面链接测试、容错测试、稳定性测试、性能测试(简单方面)等等。1.1.1界面友好性测试风格、样式的协调性是否合理界面布局是否整齐,尽量不要使用滚动条界面操作、标题描述要恰当操作符合大众的常规习惯提示界面符合规范(不要出现中英混写)界面中各个控件是否整齐美观日期控件是否可正常编辑、长度是否合理,...
            0 1 1185
            分享
          •         在软件测试中,我们经常会接触到“版本控制”这个概念,很多同学会想当然的理解成“产品的版本”、发布包的版本。诚然,这些版本控制好了,有助于测试对象的清晰界定。不知道大家有没有想过“测试用例的版本控制”,在实际的工作中,大家又是如何有效的管理测试用例的版本呢?今天我们就一起来聊一聊,希望读完这篇文章,有助于大家理清思路。如何成长为测试专家,钻进去,再钻出来,你就是专家。在测试过程中,我们经常会遇到各种概念,不能一味的依赖工具系统的名词定义,而要脱离系统,想一想,如果我们没有工具,这些工作应该是什么样,工...
            1 4 9789
            分享
          •   首先,郑重的说明一下,本人是纯服务端开发人员,不懂安卓和ios开发,在实际开发配合中,也只负责给安卓和ios的同事提供服务端调取的接口以及处理支付宝的异步回调。所以这篇文章只是介绍服务端的开发过程,不会涉及到安卓和ios客户端的处理过程,如果你只想了解客户端处理过程,可以不用往下看了,goodbye!!!  在看这篇文章之前,希望你先看上一篇文章支付宝支付(一)—H5手机网站支付2.0(alipay.trade.wap.pay) ,涉及到的部分准备工作这里就不再重复了,有疑问的看上一篇文章或者查阅官方文档。一、APP支付产品介绍  APP支付适用于商家在 App 应用中集成支付宝支付功能。...
            0 0 954
            分享
      • 51testing软件测试圈微信