# langchain-standard-tests
This is an INTERNAL library for the LangChain project. It contains the base classes for
a standard set of tests.
## Installation
This package will NOT be regularly published to pypi. It is intended to be installed
directly from github at test time.
Pip:
```bash
pip install git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests
```
Poetry:
```bash
poetry add git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests
```
## Usage
To add standard tests to an integration package's e.g. ChatModel, you need to create
1. A unit test class that inherits from ChatModelUnitTests
2. An integration test class that inherits from ChatModelIntegrationTests
`tests/unit_tests/test_standard.py`:
```python
"""Standard LangChain interface tests"""
from typing import Type
import pytest
from langchain_core.language_models import BaseChatModel
from langchain_standard_tests.unit_tests import ChatModelUnitTests
from langchain_parrot_chain import ChatParrotChain
class TestParrotChainStandard(ChatModelUnitTests):
@pytest.fixture
def chat_model_class(self) -> Type[BaseChatModel]:
return ChatParrotChain
```
`tests/integration_tests/test_standard.py`:
```python
"""Standard LangChain interface tests"""
from typing import Type
import pytest
from langchain_core.language_models import BaseChatModel
from langchain_standard_tests.integration_tests import ChatModelIntegrationTests
from langchain_parrot_chain import ChatParrotChain
class TestParrotChainStandard(ChatModelIntegrationTests):
@pytest.fixture
def chat_model_class(self) -> Type[BaseChatModel]:
return ChatParrotChain
```
## Reference
The following fixtures are configurable in the test classes. Anything not marked
as required is optional.
- `chat_model_class` (required): The class of the chat model to be tested
- `chat_model_params`: The keyword arguments to pass to the chat model constructor
- `chat_model_has_tool_calling`: Whether the chat model can call tools. By default, this is set to `hasattr(chat_model_class, 'bind_tools)`
- `chat_model_has_structured_output`: Whether the chat model can structured output. By default, this is set to `hasattr(chat_model_class, 'with_structured_output')`
Raw data
{
"_id": null,
"home_page": "https://github.com/langchain-ai/langchain",
"name": "langchain-base-tests",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Erick Friis",
"author_email": "erick@langchain.dev",
"download_url": "https://files.pythonhosted.org/packages/35/4b/bb3e100fb5b43d51d6ffecab3fe74361dd890080f0844b93f79ea3258e4a/langchain_base_tests-0.3.0.tar.gz",
"platform": null,
"description": "# langchain-standard-tests\n\nThis is an INTERNAL library for the LangChain project. It contains the base classes for\na standard set of tests.\n\n## Installation\n\nThis package will NOT be regularly published to pypi. It is intended to be installed\ndirectly from github at test time.\n\nPip:\n \n ```bash\n pip install git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests\n ```\n\nPoetry:\n \n ```bash\n poetry add git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests\n ```\n\n## Usage\n\nTo add standard tests to an integration package's e.g. ChatModel, you need to create\n\n1. A unit test class that inherits from ChatModelUnitTests\n2. An integration test class that inherits from ChatModelIntegrationTests\n\n`tests/unit_tests/test_standard.py`:\n \n```python\n\"\"\"Standard LangChain interface tests\"\"\"\n\nfrom typing import Type\n\nimport pytest\nfrom langchain_core.language_models import BaseChatModel\nfrom langchain_standard_tests.unit_tests import ChatModelUnitTests\n\nfrom langchain_parrot_chain import ChatParrotChain\n\n\nclass TestParrotChainStandard(ChatModelUnitTests):\n @pytest.fixture\n def chat_model_class(self) -> Type[BaseChatModel]:\n return ChatParrotChain\n```\n\n`tests/integration_tests/test_standard.py`:\n \n```python\n\"\"\"Standard LangChain interface tests\"\"\"\n\nfrom typing import Type\n\nimport pytest\nfrom langchain_core.language_models import BaseChatModel\nfrom langchain_standard_tests.integration_tests import ChatModelIntegrationTests\n\nfrom langchain_parrot_chain import ChatParrotChain\n\n\nclass TestParrotChainStandard(ChatModelIntegrationTests):\n @pytest.fixture\n def chat_model_class(self) -> Type[BaseChatModel]:\n return ChatParrotChain\n```\n\n## Reference\n\nThe following fixtures are configurable in the test classes. Anything not marked\nas required is optional.\n\n- `chat_model_class` (required): The class of the chat model to be tested\n- `chat_model_params`: The keyword arguments to pass to the chat model constructor\n- `chat_model_has_tool_calling`: Whether the chat model can call tools. By default, this is set to `hasattr(chat_model_class, 'bind_tools)`\n- `chat_model_has_structured_output`: Whether the chat model can structured output. By default, this is set to `hasattr(chat_model_class, 'with_structured_output')`\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Standard tests for LangChain implementations",
"version": "0.3.0",
"project_urls": {
"Homepage": "https://github.com/langchain-ai/langchain",
"Repository": "https://github.com/langchain-ai/langchain",
"Source Code": "https://github.com/langchain-ai/langchain/tree/master/libs/standard-tests"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ec5872122252dc619d211481116af693cfc47750c679b5a42c53d771e422672f",
"md5": "3fd7caef495595a3114c6ea322a8b92e",
"sha256": "0ac75dd4363bb6c995febcb1bb4e593e619a58e8239fadc12d637e7fd00d9a2e"
},
"downloads": -1,
"filename": "langchain_base_tests-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3fd7caef495595a3114c6ea322a8b92e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 22157,
"upload_time": "2024-11-05T21:20:40",
"upload_time_iso_8601": "2024-11-05T21:20:40.704959Z",
"url": "https://files.pythonhosted.org/packages/ec/58/72122252dc619d211481116af693cfc47750c679b5a42c53d771e422672f/langchain_base_tests-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "354bbb3e100fb5b43d51d6ffecab3fe74361dd890080f0844b93f79ea3258e4a",
"md5": "02d095919404030c2fbe0969ea74df9b",
"sha256": "259321b1965c682b5313fadde669d928163e32b633ac21227ff199f777b90a31"
},
"downloads": -1,
"filename": "langchain_base_tests-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "02d095919404030c2fbe0969ea74df9b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 17082,
"upload_time": "2024-11-05T21:20:42",
"upload_time_iso_8601": "2024-11-05T21:20:42.442000Z",
"url": "https://files.pythonhosted.org/packages/35/4b/bb3e100fb5b43d51d6ffecab3fe74361dd890080f0844b93f79ea3258e4a/langchain_base_tests-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-05 21:20:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "langchain-ai",
"github_project": "langchain",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "langchain-base-tests"
}