我们可以在 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
来自文档
生成器输出可能绑定到测试中带有 'generator binds' 的变量
生成器必须在测试集配置中按名称声明才能使用
生成器绑定对每个 HTTP 调用计算一次:
每次测试仅一次,基准测试多次
生成器绑定仅适用于它们在其中声明的 Test/Benchmark。只有在计算绑定时才会生成新值。
这里是 PyrestTest 的作者:我不确定我是否理解您为什么要尝试这样做。
如果您使用的是测试本地序列,它将始终从同一位置开始,因此您只需在 'variable_binds' 测试配置元素下定义一个硬编码变量。
如果您想使用在不同测试之间共享状态的生成器,那么您可以在配置元素中定义它。如果您想生成随机值,这也是明智的。
有一些更高级的动态变量工具可能会有所帮助,但是:https://github.com/svanoort/pyresttest/issues/101 .
我正在尝试在测试主体而不是 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
来自文档
生成器输出可能绑定到测试中带有 'generator binds' 的变量
生成器必须在测试集配置中按名称声明才能使用
生成器绑定对每个 HTTP 调用计算一次: 每次测试仅一次,基准测试多次 生成器绑定仅适用于它们在其中声明的 Test/Benchmark。只有在计算绑定时才会生成新值。
这里是 PyrestTest 的作者:我不确定我是否理解您为什么要尝试这样做。
如果您使用的是测试本地序列,它将始终从同一位置开始,因此您只需在 'variable_binds' 测试配置元素下定义一个硬编码变量。
如果您想使用在不同测试之间共享状态的生成器,那么您可以在配置元素中定义它。如果您想生成随机值,这也是明智的。
有一些更高级的动态变量工具可能会有所帮助,但是:https://github.com/svanoort/pyresttest/issues/101 .