我们可以在 pyretest 框架中的测试体内定义生成器吗

Can we define generators inside a test body in pyrestest framework

我正在尝试在测试主体而不是 config 部分中定义 generators。那些熟悉 pyresttest 框架的人,生成器是一种为您的测试动态定义变量的方法 Documentation

---
- config:
    - testset: "Benchmark tests using test app"
    # Variables to use in the test set
    - variable_binds: {firstname: 'Gaius-Test', lastname: 'Baltar-Test'}
    # Generators to use in the test set
    - generators:  
        # Generator named 'id' that counts up from 10
        - 'id': {type: 'number_sequence', start: 10}

- benchmark: # create new entities
    - generator_binds: {user_id: id}
    - name: "Create person"
    - url: {template: "/api/person/$user_id/"}
    - warmup_runs: 0
    - method: 'PUT'
    - headers: {'Content-Type': 'application/json'}
    - body: {template: '{"first_name": "$firstname","id": "$user_id","last_name": "$lastname","login": "test-login-$id"}'}
    - 'benchmark_runs': '1000'
    - output_format: csv
    - metrics:
        - total_time: total
        - total_time: mean

如果您看到示例,生成器在配置部分定义,因此变量 id 可用于下面定义的所有测试。我的要求是在测试体内定义所有生成器绑定,想知道这是否可能?如果有人可以提供示例,我将不胜感激。我想要实现的是下面给出的:

- test: # create new entities
    - generators:
      # Generator named 'id' that counts up from 10
      - 'id': {type: 'number_sequence', start: 100}
    - generator_binds: {user_id: id}
    - name: "Create person"
    - url: {template: "/api/person/$user_id/"}
    - warmup_runs: 0
    - method: 'PUT'
    - headers: {'Content-Type': 'application/json'}
    - body: {template: '{"first_name": "$firstname","id": "$user_id","last_name": "$lastname","login": "test-login-$id"}'}
    - 'benchmark_runs': '1000'
    - output_format: csv
    - metrics:
        - total_time: total
        - total_time: mean

来自文档

这里是 PyrestTest 的作者:我不确定我是否理解您为什么要尝试这样做。

如果您使用的是测试本地序列,它将始终从同一位置开始,因此您只需在 'variable_binds' 测试配置元素下定义一个硬编码变量。

如果您想使用在不同测试之间共享状态的生成器,那么您可以在配置元素中定义它。如果您想生成随机值,这也是明智的。

有一些更高级的动态变量工具可能会有所帮助,但是:https://github.com/svanoort/pyresttest/issues/101 .