Testing Guide
This document explains how to run tests for bib-ami using pytest and offline network mocking.
Running Tests
Execute the test suite from the root of the repository:
pytest tests/
Offline Mocking with pytest-httpx
Because bib-ami is a thin client, it must not make live HTTP requests to the cloud engine during automated testing. Use pytest-httpx to deterministically mock API responses.
Example: Mocking a Lookup
from bib_ami.client import BibAmiClient
def test_lookup_citation(httpx_mock):
# Intercept the request and provide a static JSON response
httpx_mock.add_response(
url="http://127.0.0.1:8000/v1/citations/lookup?query=10.1234/test",
json={"status": "Verified", "title": "Mocked Title"}
)
client = BibAmiClient()
result = client.lookup_citation("10.1234/test")
assert result["title"] == "Mocked Title"