Testing
How to test your Astra bots and contribute tests to the framework.
Testing your bot
Since Astra needs a real browser and a WhatsApp session, full integration tests require a live environment. For unit testing your handler logic, you can separate it from the Astra-specific code:
# handlers.py -- pure logic, easy to test
def format_help_text(commands: list[str]) -> str:
return "\\n".join(f"`.{cmd}`" for cmd in commands)
# bot.py -- Astra integration
from astra import Client, Filters
from handlers import format_help_text
client = Client(session_id="test")
@client.on_message(Filters.command(".help"))
async def help_cmd(msg):
text = format_help_text(["ping", "echo", "help"])
await msg.respond(text)
# test_handlers.py
from handlers import format_help_text
def test_format_help():
result = format_help_text(["ping", "echo"])
assert "`.ping`" in result
assert "`.echo`" in result
Running tests
pip install -e ".[dev]"
pytest
Framework tests
The tests/ directory contains tests for Astra’s internal modules.
These use pytest-asyncio for async test support.
pytest tests/ -v
Syntax validation
A quick way to validate all Python files parse correctly:
python -c "
import ast, pathlib
for f in pathlib.Path('astra').rglob('*.py'):
ast.parse(f.read_text())
print(f'OK {f}')
"
Import chain test
Verify the full import chain works:
python -c "
from astra import Client, Filters
from astra.errors import AstraError, ErrorCode
print(f'Loaded {len(ErrorCode)} error codes')
print('All imports OK')
"