我正在尝试自动化测试。
基本上,这是一个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
但是“ if controller”不起作用,这意味着未调用JSON断言。
您知道如何解决它,或另一种解决方法?
提前谢谢!
答案 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]
${__jexl3(${responseCode}=="200",)}
${__groovy(prev.getResponseDataAsString(),)}
的虚拟采样器
${__groovy(prev.getResponseDataAsString(),)}
的虚拟采样器
答案 2 :(得分:0)
使用IF控制器,您可以在其中将字符串放置为$ {JMeterThread.last_sample_ok},这将检查先前请求的响应,并且它将相应地工作.. !!