Python SDK for TestZeus testing platform
Project description
TestZeus SDK
Python SDK for the TestZeus testing platform.
Installation
Install the package using pip:
pip install testzeus-sdk
Or use Poetry:
poetry add testzeus-sdk
Getting Started
import asyncio
from testzeus_sdk import TestZeusClient
async def main():
# Create a client with email/password
client = TestZeusClient(email="your-email", password="your-password")
# Use as a context manager
async with client:
# Your code here
pass
# Run the example
asyncio.run(main())
Authentication
The SDK supports three authentication methods:
Email/Password
client = TestZeusClient(email="your-email", password="your-password")
Environment Variables
export TESTZEUS_EMAIL="your-email"
export TESTZEUS_PASSWORD="your-password"
Then create the client without parameters:
client = TestZeusClient()
Core Functionality
Tests Management
List Tests
# Get list of tests with filters and sorting
tests = await client.tests.get_list(
expand='tags', # Expand related entities
sort='id', # Sort by field
filters={ # Filter results
'id': 'y9b88f17vabx476'
}
)
print(tests)
print(tests['items'][0].data) # Access test data
Get Single Test
# Get test by ID
test = await client.tests.get_one('311137kown88nd6')
print(test.data)
Create Test
# Create a new test
new_test = await client.tests.create(
name="New Test",
test_feature="Example feature",
status="draft", # Optional: 'draft', 'ready', 'deleted'
test_data=["data_id1", "data_id2"], # Optional: List of test data IDs
tags=["tag1", "tag2"], # Optional: List of tag IDs
environment="env_id" # Optional: Environment ID
)
Update Test
# Update test properties
updated_test = await client.tests.update(
'test_id',
name='Updated Test Name'
)
print(updated_test.data)
Delete Test
# Delete a test
await client.tests.delete('test_id')
Test Runs Management
Create and Start Test Run
# Create and start a test run
test_run = await client.test_runs.create_and_start(
name="Test Run Name",
test="Test Name or ID"
)
print(test_run.data)
Track Test Run Status
# Get test run by ID
test_run = await client.test_runs.get_one('test_run_id')
# Check test run status
if test_run.is_running():
print("Test is currently running")
elif test_run.is_completed():
print("Test has completed successfully")
elif test_run.is_failed():
print("Test has failed")
elif test_run.is_crashed():
print("Test has crashed")
elif test_run.is_cancelled():
print("Test was cancelled")
elif test_run.is_pending():
print("Test is pending")
# Get test run duration
duration = test_run.get_duration()
if duration:
print(f"Test run took {duration} seconds")
Get Detailed Test Run Information
# Get expanded test run details including all outputs, steps, and attachments
expanded_test_run = await client.test_runs.get_expanded('test_run_id')
# Access different components of the test run
test_run_data = expanded_test_run['test_run']
test_run_dashs = expanded_test_run['test_run_dashs']
test_run_dash_outputs = expanded_test_run['test_run_dash_outputs']
test_run_dash_output_steps = expanded_test_run['test_run_dash_output_steps']
test_run_dash_outputs_attachments = expanded_test_run['test_run_dash_outputs_attachments']
# Print test run details
print(f"Test Run Name: {test_run_data['name']}")
print(f"Status: {test_run_data['status']}")
print(f"Start Time: {test_run_data['start_time']}")
print(f"End Time: {test_run_data['end_time']}")
# Print test run steps
for step in test_run_dash_output_steps:
print(f"Step: {step['name']}")
print(f"Status: {step['status']}")
print(f"Is Passed: {step['is_passed']}")
print(f"Assert Summary: {step['assert_summary']}")
Cancel Test Run
# Cancel a running test
try:
cancelled_test = await client.test_runs.cancel('test_run_id')
print(f"Test run cancelled: {cancelled_test.status}")
except ValueError as e:
print(f"Cannot cancel test: {str(e)}")
Download Test Run Attachments
# Download all attachments for a test run
download_attachment = await client.test_runs.download_all_attachments(
'test_run_id',
'local/path/to/save'
)
# Download specific attachment
attachment = await client.test_run_dash_outputs_attachments.download_attachment(
'attachment_id',
'local/path/to/save'
)
Monitor Test Run Progress
import asyncio
import time
async def monitor_test_run(test_run_id: str, check_interval: int = 5):
"""
Monitor a test run's progress until completion
Args:
test_run_id: ID of the test run to monitor
check_interval: Time between status checks in seconds
"""
while True:
test_run = await client.test_runs.get_one(test_run_id)
if test_run.is_completed():
print("Test run completed successfully!")
break
elif test_run.is_failed():
print("Test run failed!")
break
elif test_run.is_crashed():
print("Test run crashed!")
break
elif test_run.is_cancelled():
print("Test run was cancelled!")
break
print(f"Test run status: {test_run.status}")
await asyncio.sleep(check_interval)
# Usage
await monitor_test_run('test_run_id')
Test Data Management
# Create test data
test_data = await client.test_data.create({
"name": "Test Data",
"type": "test", # Optional: defaults to "test"
"status": "draft" # Optional: defaults to "draft"
})
Environment Management
# List environments
environments = await client.environments.get_list()
# Get environment by ID
environment = await client.environments.get_one('env_id')
Tags Management
# List tags
tags = await client.tags.get_list()
# Create tag
tag = await client.tags.create({
"name": "New Tag"
})
Available Managers
The SDK provides managers for all TestZeus collections:
client.tests- Testsclient.test_runs- Test Runsclient.test_run_dashs- Test Run Dashboardsclient.test_data- Test Dataclient.environments- Environmentsclient.tags- Tagsclient.agent_configs- Agent Configurationsclient.test_devices- Test Devicesclient.test_designs- Test Designsclient.test_run_dash_outputs- Test Run Dashboard Outputsclient.test_run_dash_output_steps- Test Run Dashboard Output Stepsclient.tenant_consumption- Tenant Consumptionclient.tenant_consumption_logs- Tenant Consumption Logs
Contributing
- Clone the repository
- Install dependencies with Poetry:
poetry install - Run tests:
poetry run pytest
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
testzeus_sdk-0.0.1.tar.gz
(23.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file testzeus_sdk-0.0.1.tar.gz.
File metadata
- Download URL: testzeus_sdk-0.0.1.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7ae636103438b04b4dd281f1d195cb02393c88aa78021c3dfa235c97017050a
|
|
| MD5 |
641923afed1839a9d43446ba6888fa0f
|
|
| BLAKE2b-256 |
a414e2617f295bdad66a6ccd7ce8501d74895c73316d2a71c2efeb331965c2a5
|
File details
Details for the file testzeus_sdk-0.0.1-py3-none-any.whl.
File metadata
- Download URL: testzeus_sdk-0.0.1-py3-none-any.whl
- Upload date:
- Size: 48.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dd104a993478691ce489c8a2cf5a48bd642c03f4fe65844983d8fd1bed64871
|
|
| MD5 |
24e5f86eaf7048e8861ec6213006f97a
|
|
| BLAKE2b-256 |
bda9f15cbd5fd53ef7eb1d912b7a352ef871aab69a3747d6a9bbc3b1290a94bf
|