standard-tests: root docstrings (#28595)

This commit is contained in:
Erick Friis 2024-12-06 15:14:52 -08:00 committed by GitHub
parent 925ca75ca5
commit b7c2029e84
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 7 deletions

View File

@ -9,6 +9,10 @@ from langchain_tests.base import BaseStandardTests
class RetrieversIntegrationTests(BaseStandardTests):
"""
Base class for retrievers integration tests.
"""
@property
@abstractmethod
def retriever_constructor(self) -> Type[BaseRetriever]: ...

View File

@ -5,9 +5,21 @@ from langchain_tests.unit_tests.tools import ToolsTests
class ToolsIntegrationTests(ToolsTests):
"""
Base class for tools integration tests.
"""
def test_invoke_matches_output_schema(self, tool: BaseTool) -> None:
"""
If invoked with a ToolCall, the tool should return a valid ToolMessage content.
If you have followed the `custom tool guide <https://python.langchain.com/docs/how_to/custom_tools/>`_,
this test should always pass because ToolCall inputs are handled by the
:class:`langchain_core.tools.BaseTool` class.
If you have not followed this guide, you should ensure that your tool's
`invoke` method returns a valid ToolMessage content when it receives
a dict representing a ToolCall as input (as opposed to distinct args).
"""
tool_call = ToolCall(
name=tool.name,
@ -36,6 +48,8 @@ class ToolsIntegrationTests(ToolsTests):
async def test_async_invoke_matches_output_schema(self, tool: BaseTool) -> None:
"""
If ainvoked with a ToolCall, the tool should return a valid ToolMessage content.
For debugging tips, see :meth:`test_invoke_matches_output_schema`.
"""
tool_call = ToolCall(
name=tool.name,
@ -65,12 +79,20 @@ class ToolsIntegrationTests(ToolsTests):
"""
If invoked without a ToolCall, the tool can return anything
but it shouldn't throw an error
If this test fails, your tool may not be handling the input you defined
in `tool_invoke_params_example` correctly, and it's throwing an error.
This test doesn't have any checks. It's just to ensure that the tool
doesn't throw an error when invoked with a dictionary of kwargs.
"""
tool.invoke(self.tool_invoke_params_example)
async def test_async_invoke_no_tool_call(self, tool: BaseTool) -> None:
"""
If invoked without a ToolCall, the tool can return anything
If ainvoked without a ToolCall, the tool can return anything
but it shouldn't throw an error
For debugging tips, see :meth:`test_invoke_no_tool_call`.
"""
await tool.ainvoke(self.tool_invoke_params_example)

View File

@ -15,7 +15,7 @@ EMBEDDING_SIZE = 6
class VectorStoreIntegrationTests(BaseStandardTests):
"""Test suite for checking the read-write API of a vector store.
"""Base class for checking the read-write API of a vector store.
Implementers should subclass this test suite and provide a fixture
that returns an empty vector store for each test.

View File

@ -1,8 +1,3 @@
"""
.. autosummary::
:exclude-members: ToolsTests
"""
import os
from abc import abstractmethod
from typing import Tuple, Type, Union
@ -64,6 +59,10 @@ class ToolsTests(BaseStandardTests):
class ToolsUnitTests(ToolsTests):
"""
Base class for tools unit tests.
"""
@property
def init_from_env_params(self) -> Tuple[dict, dict, dict]:
"""Return env vars, init args, and expected instance attrs for initializing