Qase TestOps Pytest Reporter
Qase Pytest Reporter enables seamless integration between your Pytest tests and Qase TestOps, providing automatic test result reporting, test case management, and comprehensive test analytics.
- Link automated tests to Qase test cases by ID
- Auto-create test cases from your test code
- Report test results with rich metadata (fields, attachments, steps)
- Support for parameterized tests
- Multi-project reporting support
- Flexible configuration (file, environment variables, CLI)
- Built-in support for Playwright-based tests
pip install qase-pytest1. Create qase.config.json in your project root:
{
"mode": "testops",
"testops": {
"project": "YOUR_PROJECT_CODE",
"api": {
"token": "YOUR_API_TOKEN"
}
}
}2. Add Qase ID to your test:
from qase.pytest import qase
@qase.id(1)
def test_example():
assert True3. Run your tests:
pytestFor migration guides between major versions, see Upgrade Guide.
The reporter is configured via (in order of priority):
- CLI options (
--qase-*, highest priority) - Environment variables (
QASE_*) - Config file (
qase.config.json)
| Option | Environment Variable | CLI Option | Description |
|---|---|---|---|
mode |
QASE_MODE |
--qase-mode |
Set to testops to enable reporting |
testops.project |
QASE_TESTOPS_PROJECT |
--qase-testops-project |
Your Qase project code |
testops.api.token |
QASE_TESTOPS_API_TOKEN |
--qase-testops-api-token |
Your Qase API token |
{
"mode": "testops",
"fallback": "report",
"testops": {
"project": "YOUR_PROJECT_CODE",
"api": {
"token": "YOUR_API_TOKEN"
},
"run": {
"title": "Pytest Automated Run"
},
"batch": {
"size": 100
}
},
"report": {
"driver": "local",
"connection": {
"local": {
"path": "./build/qase-report",
"format": "json"
}
}
},
"framework": {
"pytest": {
"captureLogs": true
}
}
}Full configuration reference: See qase-python-commons for all available options including logging, status mapping, execution plans, and more.
Associate your tests with Qase test cases using test case IDs:
from qase.pytest import qase
# Single ID
@qase.id(1)
def test_single_id():
assert True
# Multiple IDs
@qase.id([2, 3])
def test_multiple_ids():
assert TrueEnhance your tests with additional information:
from qase.pytest import qase
@qase.id(1)
@qase.title("User Login Test")
@qase.suite("Authentication")
@qase.fields(
("severity", "critical"),
("priority", "high"),
("layer", "e2e"),
("description", "Verify user can log in with valid credentials"),
("preconditions", "User account exists in the system"),
)
def test_user_login():
assert TrueExclude specific tests from Qase reporting (test still runs, but results are not sent):
from qase.pytest import qase
@qase.ignore()
def test_not_reported():
assert True| Pytest Result | Qase Status |
|---|---|
| Passed | passed |
| Failed (AssertionError) | failed |
| Failed (other exception) | invalid |
| Skipped | skipped |
Attach files, screenshots, and logs to test results:
from qase.pytest import qase
def test_with_attachments():
# Attach file from path
qase.attach("/path/to/file.txt")
# Attach with custom MIME type
qase.attach(("/path/to/file.json", "application/json"))
# Attach content from memory
qase.attach((b"screenshot data", "image/png", "screenshot.png"))
assert TrueDefine test steps for detailed reporting:
from qase.pytest import qase
@qase.step("Open login page")
def open_login():
pass
@qase.step("Enter credentials")
def enter_credentials(username, password):
pass
def test_login():
open_login()
enter_credentials("user", "pass")
# Inline step with context manager
with qase.step("Click login button"):
passFor detailed usage examples, see the Usage Guide.
pytestpytest \
--qase-mode=testops \
--qase-testops-project=PROJ \
--qase-testops-api-token=your_tokenexport QASE_MODE=testops
export QASE_TESTOPS_PROJECT=PROJ
export QASE_TESTOPS_API_TOKEN=your_token
pytestpytest --qase-testops-run-id=123pytest --qase-testops-plan-id=456- Python >= 3.9
- pytest >= 7.0.0
| Guide | Description |
|---|---|
| Usage Guide | Complete usage reference with all decorators and options |
| Attachments | Adding screenshots, logs, and files to test results |
| Steps | Defining test steps for detailed reporting |
| Parameters | Working with parameterized tests |
| Multi-Project Support | Reporting to multiple Qase projects |
| Upgrade Guide | Migration guide for breaking changes |
See the examples directory for complete working examples.
Apache License 2.0. See LICENSE for details.