JMeter - 指定 CSV 行失败

JMeter - Specify CSV row failure

在 JMeter 中,我是 运行 一个使用 .CSV 文件输入数据并验证结果的脚本。它工作正常,但我不知道如何判断 .CSV 的哪个 row/line 导致了个别故障。有办法吗?

有点像示例场景(不特定于我正在做的事情,但类似): .CSV 文件的每一行都包含一个数学方程式以及预期结果。

在第 1 页,输入等式 (2+2)

然后在第 2 页上,您会得到响应:3.

那个测试显然会失败。

假设有 1,000 个测试 运行,一些通过了,一些没有通过。我怎么知道哪个 .CSV row/line 没有通过?

您的 CSV 文件中是否有任何列可以帮助您唯一地标识一行?

  • 假设您有一个名为 'TestCaseNo' 的列,其值为 TC001、TC002、TC003...等
  • 添加一个 Beanshell Post 处理器来存储每次迭代的结果。
  • 添加以下代码。我假设您将 PASS 或 FAIL 结果存储在 'Result' 变量中。

    import java.io.File;
    import org.apache.jmeter.services.FileServer;
    
    f = new FileOutputStream("someptah/tcstatus.csv", true); 
    p = new PrintStream(f); 
    p.println( vars.get("TestCaseNo") + "," + vars.get("Result"));
    p.close();
    f.close();
    
  • 以上代码创建了一个 CSV 文件,其中包含每个测试用例的结果。

编辑:

在 Beanshell post 处理器中自己做断言。

    import java.io.File;
    import org.apache.jmeter.services.FileServer;

   Result = "FAIL";
   Response = prev.getResponseDataAsString();
   if (Response.contains("value")) // replace the value with the expected text
       Result = "PASS";

    f = new FileOutputStream("someptah/tcstatus.csv", true); 
    p = new PrintStream(f); 
    p.println( vars.get("TestCaseNo") + "," + Result);
    p.close();
    f.close();

我会使用以下方法

  1. __CSVRead() 函数 - 从 .csv 文件中获取数据。
  2. __counter 功能 - 跟踪 CSV 文件位置。您可以将计数器变量名称包含到采样器的标签中,以便可以报告当前的 .csv 文件行。例如见下图

有关上述和其他有用的 JMeter 功能的更多信息,请参阅 How to Use JMeter Functions 帖子系列。