每次Taurus测试运行时如何更改xml?

时间:2018-01-02 07:09:08

标签: xml testing jmeter blazemeter taurus

我跟随yaml进行金牛座测试:

- url: 'someURL'
    method: POST
    label: 'SomeLabel'
    headers:
     Content-Type: "application/xml"
     Authorization: "auth"
     remote_user: "someUser"
    body-file: './requests/some.xml'
    assert:
      - contains:
        - 200
        subject: http-code
        regexp: true
    assert-xpath:
      - xpath: "//response//someId[.='00001']"

因此,当我运行这些测试时,someId会被返回。根据some.xml中的数据返回Id。最近我们要求根据以前的请求中是否有数据返回someIds,然后有些ID会改变,我不想要。我想要的是每当测试在xml中运行一个字段时,应该以之前未见过的方式进行更改,金牛座中是否有某些内容可以满足此要求。

1 个答案:

答案 0 :(得分:0)

如果您需要从文件之前中提取数据以运行请求,您可以添加额外的HTTP Request采样器并使用file protocol以允许XPath Extractor获取"有趣"来自XML的值,以便您以后可以重用它,例如Taurus测试计划演示的方法将类似于:

scenarios:
  get-value-from-xml:
    requests:
    - url: file:///path/to/requests/some.xml
      extract-xpath:
        someid: //response//someId

execution:
- scenario: get-value-from-xml

您可以在必要时将提取的值引用为${someid}

有关详细信息,请参阅Taurus JMeter Executor: Requests

如果您需要修改文件,可以使用JSR223 Block进行修改,请查看以下示例以获取详细信息:

scenarios:
  replace-value-in-xml:
    requests:
    - url: http://example.com
      jsr223:
      - language: groovy
        script-text: 'new File("/path/to/requests/some.xml").text = new File("/path/to/requests/some.xml").text.replace("oldId","newId")'
        execute: before
execution:
  - scenario: replace-value-in-xml