新用户注册

新用户注册的接口是POST /register username/password/password_confirmation

该接口需要提供3个参数,分别是

  • username 用户名
  • password 密码
  • password_confirmation 重复一遍密码

我们现在的任务就是使用jmeter来测试新用户注册这个接口,如果该接口返回了新注册用户的信息,那么我们可以认为注册是成功了的,否则会出现各种报错。

步骤

  1. 在express_api_demo路径下使用npm start启动smile api的后台服务
  2. 在测试计划下新建一HTTP请求默认值

    • 服务器名或IP:localhost
    • 端口号: port
  3. 新建线程组(ctrl+0)

  4. 在线程组下新建Random Variable配置元件

    • 名称: username
    • Variable Name: username
    • Output Format: user_000
    • Minimum Value: 1
    • Maximum Value: 999
  5. 新建HTTP请求取样器

    • 名称: 注册
    • 路径: /register
    • 请求参数:
      • username: ${username}
      • password:  ${username}
      • password_confirmation: ${username}
  1. 在线程组下添加1个查看结果树(ctrl+9)
  2. 在线程组下添加1个Debug Sample(ctrl+8)
  3. 保存并运行,结果如下图所示

断言

我们现在已经调通了接口,下面就可以给接口做断言了。

该接口的输入是

  • username
  • password
  • password_confirmation

输出是

  • id: 数据库中的id
  • username
  • password: 密文的
  • updatedAt: 修改时间
  • createdAt: 创建时间
{
"id":,
"username":"user_527",
"password":"$2a$10$VynjsNb8BwvTsKBRJ68/MObtKYLhtK7TrKxjfWrtufoOOO/yS5qZu",
"updatedAt":"2016-09-09T09:29:36.000Z",
"createdAt":"2016-09-09T09:29:36.000Z"
}

很容易想到,我们的断言可以判断下面几件事情

  • 创建成功后返回的json字符串里应该包含username这个key
  • 创建成功后返回的json字符串里username这个key的值应该跟我们随机生成的用户名是一致的

下面我们就开始添加这些断言

在"注册"这个HTTP请求下新建JSON PATH PostProcessor

  • 名称: 获取注册成功后返回的用户名
  • Variable names: returned_username
  • JSON Path expressions: $.username
  • Match Numbers: 1
  • Default Value: NOT FOUND

新建JSR223 Assertion

  • 名称: 用户名不能为空
  • Language: javascript
  • Script:
 var returned_username = vars.get('returned_username');

  if(returned_username == 'NOT FOUND'){
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage('没有返回用户名');
}

新建JSR223 Assertion

  • 名称: 用户名应该是正确的
  • Language: javascript
  • Script:
var returned_username = vars.get('returned_username');
var expected_username = vars.get('username'); if(returned_username != expected_username){
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage('返回的用户名不正确');
}

因为断言通过的时候我们是没有办法在查看结果树里看到断言的信息的,所以我们需要故意让断言不通过来测试断言的准确性。

将"注册"HTTP请求中的password参数改为secret

保存并运行,结果如下图所示:

这就证明在注册失败的时候,断言也相应失败了,断言的行为是准确的。

Jmeter接口测试-新用户注册API的更多相关文章

  1. jenkins+ANT+jmeter 接口测试环境搭建

    目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...

  2. jmeter接口测试实战-创建用户

    jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...

  3. JMeter 接口测试-if控制器

    JMeter 接口测试-if控制器 ​ 使用场景: 当业务场景是用户登录才能支付操作, 不登录点击支付, 页面会跳转到登录页面. 对于接口也是这样, 一个接口需要执行前, 需要有前提条件, 比如0状态 ...

  4. JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建

    在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...

  5. Jmeter 接口测试实战-有趣的cookie

    Jmeter 接口测试实战-有趣的cookie 场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都 ...

  6. 【JMeter】【微信好文收藏】Jmeter接口测试实战-有趣的cookie

    场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...

  7. Jmeter接口测试实战-Cookies

    场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...

  8. Jmeter接口测试与数据驱动

    一. 背景 数据驱动Data Driven Testing(DDT),是一种用于创建自动化测试的方法,或者说是一种架构, 本质是输入数据和用这些数据获取测试结果, 使测试逻辑和测试数据分离. DDT的 ...

  9. 全网最全最细的jmeter接口测试教程以及接口测试流程详解

    一.Jmeter简介 ​ Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实 ...

随机推荐

  1. Android中的基类—抽取出来公共的方法

    在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类 ...

  2. STM32高级定时器用于普通定时,定时周期变长

    最近在用stm32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去. void cs_Timer_Init(void) //TIM1 us级 { ...

  3. 【转】Apache Jmeter发送post请求

    下面用Jmeter发送一个post请求, 对应的js代码如下: $("#register_a").click(function() { var name = $("#un ...

  4. 位数问题(dp 递推)

    位数问题 时间限制: 1 Sec  内存限制: 128 MB提交: 35  解决: 19[提交][状态][讨论版][命题人:quanxing] 题目描述 在所有的N位数中,有多少个数中有偶数个数字3? ...

  5. WebSocket实战之JavaScript例子

    一.详细代码案例 详细解读一个简单html5 WebSocket的Js实例教程,附带完整的javascript websocket实例源码,以及实例代码效果演示页面,并对本实例的核心代码进行了深入解读 ...

  6. C# winform开发

    一处消息死锁分析 最近维护一个工控机上运行的winform程序,我的前任在一个弹出窗口(窗口B)里面调用了ShowDialog方法弹出对话框(窗口C),导致了一个问题是有时关闭窗口C时windows假 ...

  7. 1.solr学习速成之配置文件

    什么是solr Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过H ...

  8. Python not readable

    try: with open('data.txt','w') as f: for each_line in f: print(each_line)except OSError as reason: p ...

  9. CentOS7上elasticsearch5.5启动报错

    ERROR: [2] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process is too ...

  10. 使用Selenium登录新浪微博

    为了总结一下Selenium的用法,具体用了这个例子来说明一下. Selenium简单来说,就是通过程序驱动一个浏览器,并且可以通过程序来帮你做一些事情,例如点击.填表呀之类的. 换句话说,你在浏览器 ...