Skip to main content

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 - Tests
  • client.test_runs - Test Runs
  • client.test_run_dashs - Test Run Dashboards
  • client.test_data - Test Data
  • client.environments - Environments
  • client.tags - Tags
  • client.agent_configs - Agent Configurations
  • client.test_devices - Test Devices
  • client.test_designs - Test Designs
  • client.test_run_dash_outputs - Test Run Dashboard Outputs
  • client.test_run_dash_output_steps - Test Run Dashboard Output Steps
  • client.tenant_consumption - Tenant Consumption
  • client.tenant_consumption_logs - Tenant Consumption Logs

Contributing

  1. Clone the repository
  2. Install dependencies with Poetry: poetry install
  3. Run tests: poetry run pytest

License

MIT

Project details


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

testzeus_sdk-0.0.1-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

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

Hashes for testzeus_sdk-0.0.1.tar.gz
Algorithm Hash digest
SHA256 e7ae636103438b04b4dd281f1d195cb02393c88aa78021c3dfa235c97017050a
MD5 641923afed1839a9d43446ba6888fa0f
BLAKE2b-256 a414e2617f295bdad66a6ccd7ce8501d74895c73316d2a71c2efeb331965c2a5

See more details on using hashes here.

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

Hashes for testzeus_sdk-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8dd104a993478691ce489c8a2cf5a48bd642c03f4fe65844983d8fd1bed64871
MD5 24e5f86eaf7048e8861ec6213006f97a
BLAKE2b-256 bda9f15cbd5fd53ef7eb1d912b7a352ef871aab69a3747d6a9bbc3b1290a94bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page