When adding/changing tests, optimize for (1) clear intent, (2) stability against refactors, and (3) determinism.
Practical rules:
set/dict conversions without sorting).autouse) for repeated setup/teardown patterns like forcing a fresh module import.Example: readable, stable expectation
result = convert_to_openai_function(MyModel)
assert result == {
"name": "MyModel",
"parameters": {"type": "object", "properties": {}, "required": []},
"strict": True,
}
Example: avoid brittle intermediate-step tests (assert the actual SDK call)
client = MagicMock()
# arrange llm to use mocked client
llm.invoke("hello", prompt_cache_key="k")
called_kwargs = client.create.call_args.kwargs
assert called_kwargs["prompt_cache_key"] == "k"
Example: fix nondeterministic ordering
items = list(set(items)) # flaky
items = sorted(set(items)) # deterministic
Enter the URL of a public GitHub repository