在“响应代码”断言之后执行jmeter条件执行

时间:2018-07-11 13:26:45

标签: json testing automation jmeter extract

我正在尝试自动化测试。

基本上,这是一个JSON请求,用于获取有关用户的信息。

我的目标是通过两个不同的JSON断言来驱动响应断言。

一个用于阳性测试用例,另一个用于阴性测试用例。

我尝试实现这种情况:

ThreadGroup
 + Http Request
  + CSV Data Set Config -> set input and expected result
  + HTTP Header Manager -> get token from previous request
  + Regular Expression Extractor -> get Response Code
+ if Controller OK (${responseCode}=="200")
  + JSON Assertion
+ if Controller NOK (${responseCode}=="400")
  + JSON Assertion

getProfile

这是正则表达式提取器: Regular Expression Extractor

这是If Controller conf: IfController

但是“ if controller”不起作用,这意味着未调用JSON断言。

您知道如何解决它,或另一种解决方法?

提前谢谢!

3 个答案:

答案 0 :(得分:0)

遵循If Controller示例:

"${VAR}" == "abcd"

${__groovy(vars.get("myVar") != "Invalid" )} 

将其更改为

 "${responseCode}" == "200"

 ${__groovy(vars.get("responseCode") == "200" )} 

答案 1 :(得分:0)

您本身不能拥有断言,断言将应用于Sampler(s)。假设您在If Controllers下没有任何Samplers,则在那里将不执行任何操作。

通常,您不能使用If Controller切换到该断言或该断言,保持当前测试计划结构的唯一方法是使用Dummy Sampler__groovy() function复制[${TEST_DESC]采样器对虚拟采样器的响应数据。

示例测试计划大纲:

  • [${TEST_DESC]
    • responseCode
  • 如果控制器#1的条件为${__jexl3(${responseCode}=="200",)}
    • 具有“响应数据” ${__groovy(prev.getResponseDataAsString(),)}的虚拟采样器
      • 检查响应json正确
  • 如果控制器#2的条件为``$ {__ jexl3($ {responseCode} ==“ 400”,)}
    • 具有“响应数据” ${__groovy(prev.getResponseDataAsString(),)}的虚拟采样器
      • 检查响应json不好

您可以使用JMeter Plugins Manager

安装虚拟采样器。

答案 2 :(得分:0)

使用IF控制器,您可以在其中将字符串放置为$ {JMeterThread.last_sample_ok},这将检查先前请求的响应,并且它将相应地工作.. !!