Variables extractors¶
Variables extractors are used to extract variables for assertions or to store them and use in next requests.
Builtin variables extractors¶
- There are two builtin extractors. First one response which give you access to attributes of response objects:
Usage:
variables:
response:
status_code: last_code
assertions:
response:
- 'status_code equals 200'
The second one is json extractor which tries treat response content as json. You can access json body using python dictionary syntax.
Usage:
variables:
json:
'[0].sha': sha1
'[1].sha': sha2
'[2].sha': sha3
assertions:
json:
- 'items.[0].full_name contains ango'
Custom variables extractors¶
You can easily create your own extractors by creating python file with code:
import re
import json
from ejpiaj.decorators import variable_extractor
@variable_extractor('json2')
def json2_variables_extractor(response, variables):
"""Extracts variables from json response.content.
Variables path are written using 'dot' access and index access to lists
f.i.:
some.path.to.list.[0]
[1].dict.access.later
"""
result = {}
re_list = re.compile('^\[\d+\]$')
# use 'dot' access to dictionary
data = json.loads(response.content)
for path, name in variables.items():
try:
subdata = data
for attr in path.split('.'):
# support for list access [0]
if re_list.match(attr):
ind = int(attr[1:-1])
subdata = subdata[ind]
else:
subdata = subdata.get(attr)
result[name] = subdata
except:
result[name] = None
return result
From now you can use json2 variables extractor in your tests by running ejpiaj-cli with your module:
$ ejpiaj-cli test --module myfile mytest.yml