Data Layer
The data layer covers everything needed to chain requests, drive tests with external data, and switch environments without rewriting your action JSON.
VariableStore
A thread-safe key/value singleton (variable_store).
from je_api_testka import variable_store
variable_store.set("token", "abc")
variable_store.get("token") # 'abc'
variable_store.snapshot() # {'token': 'abc'}
variable_store.clear()
Templating
render_template walks dicts, lists, and strings recursively, replacing
{{name}} placeholders with values from the store.
from je_api_testka import render_template, variable_store
variable_store.set("base", "https://api.invalid")
render_template({"url": "{{base}}/v1"})
# -> {'url': 'https://api.invalid/v1'}
Pass strict=True to raise when a placeholder has no matching variable.
Chaining requests
extract_and_store pulls a value from a response payload via a dotted path
and persists it for the next request.
from je_api_testka import extract_and_store, variable_store
response_payload = {"data": {"user": {"id": 7}}}
extract_and_store(response_payload, "data.user.id", "user_id")
variable_store.get("user_id") # 7
Data-driven tests
from je_api_testka import iter_csv_rows, iter_json_rows
for row in iter_csv_rows("data/users.csv"):
...
for row in iter_json_rows("data/users.json"):
...
Fake data helpers
fake_uuid, fake_email, and fake_word are stdlib-only helpers good
enough for boundary cases. For richer data sets, install Faker separately.
Environment profiles
load_env_profile reads a JSON file and pushes every key/value pair into
the variable store, so the same actions can target dev / staging / prod by
swapping profiles.
from je_api_testka import load_env_profile
load_env_profile("envs/dev.json")
Executor commands
AT_set_variableAT_get_variableAT_clear_variablesAT_extract_and_storeAT_render_templateAT_fake_uuidAT_fake_emailAT_fake_wordAT_load_env_profile