Jmeter:如何全局初始化标头管理器元素

时间:2019-03-23 18:06:11

标签: jmeter

我想在多个jmx文件中使用同一组标题。因此,我想对其进行一次初始化,并且必须在我的jmx文件中使用它。
谁能帮助我满足我的要求?预先感谢。

2 个答案:

答案 0 :(得分:1)

那是不可能的。 为了能够将Header Manager应用于所有计划,它应该具有最大的范围,但是使用Include或Module控制器意味着范围缩小了。

由于作用域stil,您可以将Header Manager设置为测试计划的子项,它将应用于整个请求。

您可以使用属性和__P函数使它们在user.properties中可配置

答案 1 :(得分:0)

您可以执行以下操作:

  1. 创建一个名为headers.csv的CSV文件来保存标题,例如:

    header-1-name,header-1-value
    header-2-name,header-2-value
    

    并将其存储在JMeter安装的“ bin”文件夹中

  2. 在测试计划的顶层添加空HTTP Header Manager

  3. setUp Thread Group添加到您的测试计划
  4. JSR223 Sample r添加到设置线程组
  5. 将以下代码放入“脚本”区域:

    import org.apache.jmeter.protocol.http.control.Header
    import org.apache.jmeter.protocol.http.control.HeaderManager
    import org.apache.jmeter.threads.JMeterContext
    import org.apache.jmeter.threads.JMeterContextService
    import org.apache.jorphan.collections.SearchByClass
    
    SampleResult.setIgnore()
    
    def engine = ctx.getEngine()
    def testPlanTree = org.apache.commons.lang3.reflect.FieldUtils.readDeclaredField(engine, "test", true)
    
    def headerManagerSearch = new SearchByClass<>(HeaderManager.class)
    testPlanTree.traverse(headerManagerSearch)
    def headerManagers = headerManagerSearch.getSearchResults()
    headerManagers.any { headerManager ->
        new File('headers.csv').readLines().each { line ->
            def values = line.split(',')
            headerManager.add(new Header(values[0], values[1]))
        }
    }
    

    enter image description here

    1. 如果需要,您可以通过Test Fragment“使”第3点和第4点“外部化”