Add unit and integration tests for Prompture functionality. Uses pytest conventions, shared fixtures from conftest.py, and the integration marker pattern. Use when writing tests for new or existing features.
Creates tests in tests/ following project conventions.
tests/conftest.pyDEFAULT_MODEL (currently "ollama/gpt-oss:20b")@pytest.mark.integration (skipped by default)# Fixtures
sample_json_schema # {"name": str, "age": int, "interests": list}
integration_driver # Driver from DEFAULT_MODEL (skips if unavailable)
# Assertion helpers
assert_valid_usage_metadata(meta) # Checks prompt_tokens, completion_tokens, total_tokens, cost, raw_response
assert_jsonify_response_structure(response) # Checks json_string, json_object, usage
tests/test_{module}.py — maps to source moduletests/test_{feature}.py — cross-cutting featuresimport pytest
from prompture import extract_with_model
class TestFeatureName:
"""Tests for {feature}."""
def test_basic_behavior(self):
"""What this test verifies."""
result = some_function(...)
assert result["key"] == expected
def test_error_handling(self):
"""Should raise ValueError on invalid input."""
with pytest.raises(ValueError, match="expected"):
some_function(bad_input)
class TestFeatureIntegration:
"""Integration tests requiring live LLM access."""
@pytest.mark.integration
def test_live_extraction(self, integration_driver, sample_json_schema):
result = extract_and_jsonify(
text="John is 30 years old",
json_schema=sample_json_schema,
model_name=DEFAULT_MODEL,
)
assert_jsonify_response_structure(result)
assert_valid_usage_metadata(result["usage"])
@pytest.mark.integrationpytest tests/ -x -q # Unit only
pytest tests/ --run-integration -x -q # Include integration
pytest tests/test_core.py::TestClass::test_method # Single test
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer