Setup
This module contains steps that can be in both Background:
and Scenario:
sections.
Then variable value ask
Then ask for value of variable "{name}"
Tell grizzly-cli
that it should ask for an initial value for the variable.
It will inject the value into the locust runtime environment, and in this step read it and insert it
into the locust context which grizzly
will use to setup locust
.
If grizzly-cli
is not used, one has to manually set the environment variable, which requires a prefix of
TESTDATA_VARIABLE_
and the suffix should match the variable name in question.
Use this step for variables that should have different initial values for each run of the feature.
Example:
And ask for value for variable "AtomicIntegerIncrementer.messageID"
Arguments:
name
str - variable name used in templates
Given variable value
Given value for variable "{name}" is "{value}"
Step to initialize a variable that should have the same [start] value for every run of the scenario.
If this step is used after a step that adds a task or for a variable that already has been initialized, it is assumed that the value will change during runtime so a Set variable task will be added instead. The Variables must have implemented support for being settable.
Data type for the value of the variable is based on the type of variable. If the variable is an testdata Variables
then the value needs to match the format and type that the variable has implemented. If it is not a testdata variable
grizzly
will try to guess the data type. E.g.:
-
"10"
becomesint
-
"1.0"
becomesfloat
-
"True"
becomesbool
-
everything else becomes
str
It is also possible to set the value of a variable based on another variable, which can be usable if you have a variable in multiple scenarios which all should have the same initial value.
Example:
Feature:
Background:
And ask for value of variable "messageID"
And value for variable "HelloWorld" is "default"
Scenario:
And value for variable "AtomicIntegerIncrementer.mid1" is "{{ messageID }}"
And value for variable "AtomicIntegerIncrementer.persistent" is "1 | step=10, persist=True"
And value for variable "AtomicCsvWriter.output" is "output.csv | headers='foo,bar'"
...
And value for variable "AtomicCsvWriter.output.foo" is "{{ value }}"
And value for variable "AtomicCsvWriter.output.bar" is "{{ value }}"
If the file features/persistent/example.json
(name of feature file and feature
extension replaced with json
) exists, and contains an entry for
the variable, the initial value will be read from the file and override the value specified in the feature file.
Arguments:
name
str - variable namevalue
Any - initial value
Then execute python script
Then execute python script "{script_path}"
Execute python script located in specified path.
The script will not execute on workers, only on master (distributed mode) or local (local mode), and
it will only execute once before the test starts. Available in the scope is the current context
object.
This can be useful for generating test data files.
Example:
Then execute python script "../bin/generate-testdata.py"
Then execute python script inline
Then execute python script
Execute inline python script specified in the step text.
The script will not execute on workers, only on master (distributed mode) or local (local mode), and
it will only execute once before the test starts. Available in the scope is the current context
object.
This can be useful for generating test data files.
Example:
Then execute python script
"""
print('foobar script')
"""
Given set context variable
Given set context variable "{variable}" to "{value}"
Set a context variable.
If used in the Background
-section the context variable will be used in all scenarios and their respective user. If used in a Scenario
section
it will only be set for that user.
If this step is before any step that adds a task in the scenario, it will be added to the context which the user is initialized with at start. If it is after any tasks, it will be added as a task which will change the context variable value during runtime.
Variable names can contain (one or more) dot (.
) or slash (/
) to indicate that the variable has a nested structure. E.g. token.url
and token/url
results in {'token': {'url': '<value'>}}
It is also possible to have spaces in a variable names, they will then be replaced with underscore (_
), and the name will be
converted to lowercase.
E.g. Client ID
results in client_id
.
Example:
And set context variable "token.url" to "https://example.com/api/auth"
And set context variable "token/client_id" to "aaaa-bbbb-cccc-dddd"
And set context variable "token/client secret" to "aasdfasdfasdf=="
And set context variable "token.resource" to "0000-aaaaaaa-1111-1111-1111"
And set context variable "log_all_requests" to "True"
And set context variable "validate_certificates" to "False"
Arguments:
variable
str - name, can contain.
and/
value
str - value, data type will be guessed and casted