有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

双数据类型的java Jmeter计数器

我正在尝试自动化一个支付交易,其中我需要增加一个双数据类型值

我使用了计数器,但它似乎没有读取十进制的增量值。我将以下设置设置为计数器:

  • 1.04的起始值
  • 0.01的增量值

和随机变量一样,我的目标是至少生成一个随机的双精度或十进制值

  • 输出格式00.00
  • 1的最小值
  • 5的最大值

甚至下面的设置也不起作用

  • 输出格式00.00
  • 1.00的最小值
  • 5.00的最大值

共 (2) 个答案

  1. # 1 楼答案

    如果希望使用JSR223预处理器生成随机数,然后进一步传递它

    enter image description here 使用${Random_Double}获取

  2. # 2 楼答案

    不幸的是,据我所知,JMeter不支持十进制计数器,因为它们是Long类型。从JMeter: Component reference: Counter开始:

    The counter uses a long to store the value, so the range is from -2^63 to 2^63-1.

    1。完全生成十进制数

    但是,请看一下下面的format描述,它表示^{}用于形成传递给自定义ex.${counterA}变量的字符串。参见格式(强调并突出显示我的):

    Optional format, e.g. 000 will format as 001, 002, etc. This is passed to DecimalFormat, so any valid formats can be used. If there is a problem interpreting the format, then it is ignored. [The default format is generated using Long.toString()]

    此功能可以根据您的需要进行调整,并允许在生成的值中添加前缀(see this SO question)或后缀。现在它变成了纯Java的东西。考虑变量{^ }是用jMe:

    生成的^ ^ {CD1>}。
    Long counter = 104L;
    String string = new DecimalFormat("#,##").format(counter);  // 1,04
    

    结论是在计数器生成表单中使用#,##数字格式参数。现在,配置如下所示:

    • 最小值:104
    • 最大值:500
    • 增量值:1
    • 数字格式:#,##

    2。十进制分隔符.,

    结果变成1,04,增量为0.01。现在本地化成了一个问题,因为一些欧洲国家使用.作为小数部分的分隔符,而下半部分使用,,这是由^{}给出的,它会影响^{}的行为。剩下的就是Replace a substring in a variable使用一个预处理器或为JMeter配置语言环境(我没有这方面的经验)

    3。性能很重要,那么CSV文件呢

    现在,您可能会问,使用这种变通方法是否会对性能产生负面影响,以及最终结果是否会被扭曲。如果用于集成测试而不测量性能并生成结果,我一点也不在乎。另一方面,当执行测试时,更好的解决方案可能是从外部文件(如CSV)加载这些预先生成的变量。更多信息请访问CSV Data Set Config