Using standard tests ↗
noOriginal Documentation
Documentation Index#
Fetch the complete documentation index at: https://docs.langchain.com/llms.txt Use this file to discover all available pages before exploring further.
Standard tests ensure your integration works as expected.
When creating either a custom class for yourself or to publish in a LangChain integration, it is necessary to add tests to ensure it works as expected. LangChain provides a comprehensive set of tests for each integration type for you. This guide will show you how to add LangChain’s standard test suite to each integration type.
Setup#
First, install the required dependencies:
Defines the interfaces we want to import to define our custom components
Provides the standard tests and pytest plugins necessary to run them
Because added tests in new versions of langchain-tests can break your CI/CD pipelines, we recommend pinning to the latest version of langchain-tests to avoid unexpected changes.
pip install -U langchain-core
pip install -U langchain-testsuv add langchain-core
uv add langchain-testsThere are 2 namespaces in the langchain-tests package:
Designed to test the component in isolation and without access to external services
Designed to test the component with access to external services (in particular, the external service that the component is designed to interact with)
Both types of tests are implemented as pytest class-based test suites.
Implementing standard tests#
Depending on your integration type, you will need to implement either or both unit and integration tests.
By subclassing the standard test suite for your integration type, you get the full collection of standard tests for that type. For a test run to be successful, the a given test should pass only if the model supports the capability being tested. Otherwise, the test should be skipped.
Because different integrations offer unique sets of features, most standard tests provided by LangChain are opt-in by default to prevent false positives. Consequently, you will need to override properties to indicate which features your integration supports - see the below example for an illustration.
# Indicate that a chat model supports image inputs
class TestChatParrotLinkStandard(ChatModelIntegrationTests):
# ... other required properties
@property
def supports_image_inputs(self) -> bool:
return True # (The default is False)You should organize tests in these subdirectories relative to the root of your package:
tests/unit_testsfor unit teststests/integration_testsfor integration tests
To see the complete list of configurable capabilities and their defaults, visit the API reference for standard tests.
Here are some example implementations of standard tests from popular integrations:
Ensure your integration passes the standard test suite. See the Daytona integration as an example.
Sandbox Integration tests
Sandbox integrations#
Deep agents sandbox integrations use SandboxIntegrationTests from langchain_tests.integration_tests.
Subclass it and provide a sandbox fixture that yields a SandboxBackendProtocol instance.
Use the Daytona integration tests as a reference implementation.
See Contributing a sandbox integration for publishing guidelines.
Running tests#
If bootstrapping an integration from a template, a Makefile is provided that includes targets for running unit and integration tests:
make test
make integration_testOtherwise, if you follow the recommended directory structure, you can run tests with:
# Run all tests
uv run --group test pytest tests/unit_tests/
uv run --group test --group test_integration pytest -n auto tests/integration_tests/
# For certain unit tests, you may need to set certain flags and environment variables:
TIKTOKEN_CACHE_DIR=tiktoken_cache uv run --group test pytest --disable-socket --allow-unix-socket tests/unit_tests/
# Run a specific test file
uv run --group test pytest tests/integration_tests/test_chat_models.py
# Run a specific test function in a file
uv run --group test pytest tests/integration_tests/test_chat_models.py::test_chat_completions
# Run a specific test function within a class
uv run --group test pytest tests/integration_tests/test_chat_models.py::TestChatParrotLinkIntegration::test_chat_completionsTroubleshooting#
For a full list of the standard test suites that are available, as well as information on which tests are included and how to troubleshoot common issues, see the Standard Tests API Reference.
Edit this page on GitHub or file an issue.
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.