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

标签 xml testing jmeter blazemeter taurus

我有以下用于 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,然后 someIDs 会发生变化,这是我不想要的。我想要的是,每当测试运行时,xml 中的一个字段应该以一种以前从未见过的方式发生变化,Taurus 中是否有一些东西可以满足这个要求。

最佳答案

如果您需要在运行请求之前 从文件中提取数据,您可以添加一个额外的 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

关于xml - 每次 Taurus 测试运行时如何更改 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056906/

相关文章:

python - 如何调试这个缓冲文件队列?

amazon-web-services - 在存在连接问题的 AWS 中设置 JMeter 以进行分布式测试

xml - 从 xml 文件的 vb.net 十六进制扫描

java - 如何使用 JAXB 忽略绑定(bind)到 XML 的字段

testing - 行为驱动还是测试驱动开发?

r - "Error in UseMethod("xml_add_child ") "test_dir 不起作用

xml - 使用 xsl :for-each over an xml to decide which label-value pairs are displayed?

python - 为什么 beautifulsoup 会改变我的 xml 格式?

testing - 生成在 JMeter 中只出现一次的随机数

jmeter - 采样器类型(HttpClient 4、HttpClient 3.1 和 Java)之间有什么区别