Essentials
All Qase reporters read settings from the same layered system. If the same option is set in more than one place, the higher layer wins.
- Config file — your base. Lives in the repo, visible to your team, holds your defaults.
- Environment variables — override the file. This is how you inject secrets in CI or flip reporting on without editing anything.
- Runtime overrides — the top layer. CLI flags in Python, system properties in Java, framework config in JavaScript. Use these for one-off overrides. C#, Go, and PHP stop at env vars — no third layer.
As an example:
Here's the same option — setting the mode to testops — expressed at each layer:
// qase.config.json
{
"mode": "testops"
}# Environment variable
export QASE_MODE=testops# CLI flag (Python/pytest)
pytest --qase-mode=testopsIf all three are set, the CLI flag wins. If only the file and env var are set, the env var wins.
When you'd use each layer
- Locally, set
"mode": "off"in the config file. You're iterating on tests — no need to push results to Qase on every run. - In CI, set
QASE_MODE=testopsas an environment variable. It overrides the file, reporting turns on, and you never touch the config. - Debugging a flaky test, pass
--qase-debug=trueon the command line. It overrides everything for that single run, and you don't have to remember to undo it.
The practical pattern: keep qase.config.json as your source of truth, use env vars for anything that changes between environments, and forget the top (cli options) layer exists until you need a one-off.
Note: Not all reporters offer CLI options for configuration. Eg: Javascript reporters.
Updated 2 days ago
