Как менять xml каждый раз, когда запускаются тесты 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']"

Поэтому, когда я запускаю эти тесты, возвращаются некоторые идентификаторы. Идентификатор возвращается в соответствии с данными в some.xml. В последнее время наше требование было возвращать someIds в соответствии с тем, если данные будут видны в предыдущих запросах, то некоторые идентификаторы будут изменены, что мне не нужно. Я хочу, чтобы всякий раз, когда тесты запускали одно поле в xml, менялось так, как не было раньше, есть ли что-то в Тельце, чтобы выполнить это требование.

1 ответ

Если вам нужно извлечь данные из файла до запуска запроса, вы можете добавить дополнительный сэмплер HTTP-запроса и использовать файловый протокол, чтобы XPath Extractor мог извлекать "интересное" значение из XML, чтобы вы могли использовать его позже Пример плана испытаний Тельца, демонстрирующий подход, будет выглядеть примерно так:

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: Запросы для получения дополнительной информации.


Если вам нужно изменить файл, вы можете сделать это с помощью блока JSR223, посмотрите подробности в следующем примере:

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
Другие вопросы по тегам