JMeter,编码所有参数

时间:2017-09-04 15:14:57

标签: jmeter jmeter-3.2

我正在寻找有关JMeter编码的一些建议。我目前正在使用一个使用https和.aspx网址的系统,因此需要对我的帖子请求中的所有参数进行编码。我正在复制并粘贴Fiddler的网络表单以生成我的测试脚本。是否有一种劳动密集度较低的方式来编码我的网页表格的所有参数,因为我不得不勾选编码每个单独的参数。

1 个答案:

答案 0 :(得分:0)

  1. 你可能会做一些奇怪的事情,因为你使用JMeter记录你的请求HTTP(S) Test Script Recorder JMeter应该自己填充请求参数,包括参数值编码(如果需要)。查看JMeter Proxy Step by Step,了解有关如何执行测试方案记录的详细信息。
  2. JMeter .jmx脚本基本上是XML files所以您应该能够在您喜欢的文本编辑器中打开JMeter脚本,找到以下行:

    <boolProp name="HTTPArgument.always_encode">true</boolProp>
    

    并将其替换为

    org.apache.jmeter.config.Arguments args = sampler.getArguments()
    sampler.getArguments().removeAllArguments()
    args.each {
        sampler.addEncodedArgument(it.getName(), it.getValue())
    }
    
  3. 您可以使用JSR223 PreProcessor和以下Groovy代码替换未编码的参数及其编码的等效参数:

    import sys
    def cycle(current, count=1):
    if current == 1:
        return count
    if current % 2 == 0:
        return cycle(current / 2, count + 1)
    return cycle(current * 3 + 1, count + 1)
    
    def max_cycles(lower, upper):
        max = 0
        for current in range(lower, upper):
            result = cycle(current, 1)
            if result > max:
                max = result
        return max
    
    
    def main(i, j):
        if i > j:
            (i, j) = (j, i)
        print (i, j, max_cycles(i, j))
    
    
    if __name__ == "__main__":
        if len(sys.argv) < 3:   
            print 'usage: python filename argv1 argv2'
            print 'exiting'
            exit(0)
        main(int(sys.argv[1]), int(sys.argv[2]))
    

    上述代码将修改JSR223 PreProcessor's scope中的所有采样器,并用其编码的等价物替换参数值。这种方法可能是资源密集型的,因此明智地使用它,如果有可能考虑第1点和/或第2点中描述的替代方法,以防万一看到Apache Groovy - Why and How You Should Use It熟悉JMeter测试中Groovy脚本的概念。 / p>