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): class RetrieversIntegrationTests(BaseStandardTests):
"""
Base class for retrievers integration tests.
"""
@property @property
@abstractmethod @abstractmethod
def retriever_constructor(self) -> Type[BaseRetriever]: ... def retriever_constructor(self) -> Type[BaseRetriever]: ...

View File

@ -5,9 +5,21 @@ from langchain_tests.unit_tests.tools import ToolsTests
class ToolsIntegrationTests(ToolsTests): class ToolsIntegrationTests(ToolsTests):
"""
Base class for tools integration tests.
"""
def test_invoke_matches_output_schema(self, tool: BaseTool) -> None: def test_invoke_matches_output_schema(self, tool: BaseTool) -> None:
""" """
If invoked with a ToolCall, the tool should return a valid ToolMessage content. 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( tool_call = ToolCall(
name=tool.name, name=tool.name,
@ -36,6 +48,8 @@ class ToolsIntegrationTests(ToolsTests):
async def test_async_invoke_matches_output_schema(self, tool: BaseTool) -> None: 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. 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( tool_call = ToolCall(
name=tool.name, name=tool.name,
@ -65,12 +79,20 @@ class ToolsIntegrationTests(ToolsTests):
""" """
If invoked without a ToolCall, the tool can return anything If invoked without a ToolCall, the tool can return anything
but it shouldn't throw an error 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) tool.invoke(self.tool_invoke_params_example)
async def test_async_invoke_no_tool_call(self, tool: BaseTool) -> None: 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 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) await tool.ainvoke(self.tool_invoke_params_example)

View File

@ -15,7 +15,7 @@ EMBEDDING_SIZE = 6
class VectorStoreIntegrationTests(BaseStandardTests): 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 Implementers should subclass this test suite and provide a fixture
that returns an empty vector store for each test. that returns an empty vector store for each test.

View File

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