【问题标题】:Jmeter only logs only first failed assertion to .jtl fileJmeter 仅将第一个失败的断言记录到 .jtl 文件
【发布时间】:2017-07-05 11:49:20
【问题描述】:

编辑:Jmeter 版本:3.1 r1770033

我对 Jmeter 的以下问题感到头疼。我尝试了几种选择,包括改变断言的顺序。目前还没有结果。

功能愿望

基本上,我希望 .jtl 日志文件反映 Jmeter Gui 模式下“断言结果”视图的内容。

当前设置

我连接到一个 PostgreSQL 数据库并从表查询中执行一个简单的选择:

select * from progress_collaboration

这给了我以下结果集:

id  curr_env_id
999 1

在采样器上我设置了 3 个断言:

  • 尺寸断言
  • 响应断言(字符串包含)
  • 持续时间断言

问题

到目前为止一切顺利,直到只有一个断言失败。当多个断言失败时,“断言结果”视图向我显示以下内容: assertionview image

但是,.jtl 日志文件(通过从命令行运行项目创建)仅包含第一个失败的断言。

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,Latency,IdleTime,Connect
1499254721391,455,Check Beheer Variable,200,OK,Thread Group 1-1,text,false,"The result was the wrong size: It was 21 bytes, but should have been equal to 170 bytes.",21,0,1,1,453,0,443

如何确保 .jtl 日志文件包含所有失败的断言?


数据

带有采样器和断言的哈希树:

        <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="Check Beheer Variable" enabled="true">
          <stringProp name="dataSource">myDatabase</stringProp>
          <stringProp name="query">select * from progress_collaboration</stringProp>
          <stringProp name="queryArguments"></stringProp>
          <stringProp name="queryArgumentsTypes"></stringProp>
          <stringProp name="queryTimeout"></stringProp>
          <stringProp name="queryType">Select Statement</stringProp>
          <stringProp name="resultSetHandler">Store as String</stringProp>
          <stringProp name="resultVariable"></stringProp>
          <stringProp name="variableNames"></stringProp>
        </JDBCSampler>
        <hashTree>
          <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true">
            <stringProp name="Assertion.test_field">SizeAssertion.response_network_size</stringProp>
            <stringProp name="SizeAssertion.size">170</stringProp>
            <intProp name="SizeAssertion.operator">1</intProp>
          </SizeAssertion>
          <hashTree/>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="56601">999</stringProp>
              <stringProp name="-715001365">incorrect_string</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">true</boolProp>
            <intProp name="Assertion.test_type">2</intProp>
          </ResponseAssertion>
          <hashTree/>
          <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
            <stringProp name="DurationAssertion.duration">1000</stringProp>
            <stringProp name="Assertion.scope">all</stringProp>
          </DurationAssertion>
          <hashTree/>
        </hashTree>
        

【问题讨论】:

  • Jmeter 3.1 还是 3.2?
  • 好问题,我忘了提。 3.1

标签: postgresql jdbc jmeter assertions


【解决方案1】:

在 jmeter.properties 中定义/更新属性:

jmeter.save.saveservice.assertion_results=all

(您可能已经定义了 jmeter.save.saveservice.assertion_results=first)

侦听器还应选中另存为 XML 复选框(在配置中)

【讨论】:

  • 我不知道这个属性文件。我查了一下,这个属性被注释掉了。我已取消注释该属性并添加“全部”作为值。可悲的是它没有任何区别。编辑:编辑属性后,我重新启动了 jmeter 以确保。
  • 你需要重启jmeter。还要确保你没有重复的行
  • 添加到解决方案 - 侦听器也应该选中另存为 XML 复选框(在配置中)
  • 当我保存到 XML 时,我确实得到了所有的断言。这对我有用!
  • 谢谢@user7294900
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 2016-04-26
  • 1970-01-01
  • 2018-12-06
  • 2021-04-21
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多