1

我有以下用于 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 会返回。id 根据 some.xml 中的数据返回。最近我们的要求是,如果在以前的请求中看到数据,则返回 someIds,然后 someIDs 会改变,这是我不想要的。我想要的是,每当测试在 xml 中运行一个字段时应该以一种以前从未见过的方式发生变化,Taurus 中是否有一些东西可以满足这个要求。

4

1 回答 1

0

如果您需要在运行请求之前从文件中提取数据,您可以添加额外的HTTP 请求采样器并使用文件协议,以允许XPath 提取器从 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 执行器:请求


如果您需要修改文件,您可以使用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
于 2018-01-02T08:37:08.187 回答