2023-04-07 14:28:57 +00:00
|
|
|
# Readme tests(draft)
|
|
|
|
|
|
|
|
## Integrations Tests
|
|
|
|
|
|
|
|
### Prepare
|
|
|
|
|
|
|
|
This repository contains functional tests for several search engines and databases. The
|
|
|
|
tests aim to verify the correct behavior of the engines and databases according to their
|
|
|
|
specifications and requirements.
|
|
|
|
|
|
|
|
To run some integration tests, such as tests located in
|
|
|
|
`tests/integration_tests/vectorstores/`, you will need to install the following
|
|
|
|
software:
|
|
|
|
|
|
|
|
- Docker
|
|
|
|
- Python 3.8.1 or later
|
|
|
|
|
|
|
|
We have optional group `test_integration` in the `pyproject.toml` file. This group
|
|
|
|
should contain dependencies for the integration tests and can be installed using the
|
|
|
|
command:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
poetry install --with test_integration
|
|
|
|
```
|
|
|
|
|
|
|
|
Any new dependencies should be added by running:
|
|
|
|
|
|
|
|
```bash
|
2023-04-08 03:43:53 +00:00
|
|
|
# add package and install it after adding:
|
2023-04-12 03:45:36 +00:00
|
|
|
poetry add tiktoken@latest --group "test_integration" && poetry install --with test_integration
|
2023-04-07 14:28:57 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Before running any tests, you should start a specific Docker container that has all the
|
|
|
|
necessary dependencies installed. For instance, we use the `elasticsearch.yml` container
|
|
|
|
for `test_elasticsearch.py`:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cd tests/integration_tests/vectorstores/docker-compose
|
|
|
|
docker-compose -f elasticsearch.yml up
|
|
|
|
```
|
|
|
|
|
2023-04-14 04:49:31 +00:00
|
|
|
### Prepare environment variables for local testing:
|
|
|
|
|
|
|
|
- copy `tests/.env.example` to `tests/.env`
|
|
|
|
- set variables in `tests/.env` file, e.g `OPENAI_API_KEY`
|
|
|
|
|
2023-04-07 14:28:57 +00:00
|
|
|
Additionally, it's important to note that some integration tests may require certain
|
|
|
|
environment variables to be set, such as `OPENAI_API_KEY`. Be sure to set any required
|
|
|
|
environment variables before running the tests to ensure they run correctly.
|
|
|
|
|
|
|
|
### Recording HTTP interactions with pytest-vcr
|
|
|
|
|
|
|
|
Some of the integration tests in this repository involve making HTTP requests to
|
|
|
|
external services. To prevent these requests from being made every time the tests are
|
|
|
|
run, we use pytest-vcr to record and replay HTTP interactions.
|
|
|
|
|
|
|
|
When running tests in a CI/CD pipeline, you may not want to modify the existing
|
|
|
|
cassettes. You can use the --vcr-record=none command-line option to disable recording
|
|
|
|
new cassettes. Here's an example:
|
|
|
|
|
|
|
|
```bash
|
2023-04-14 04:49:31 +00:00
|
|
|
pytest --log-cli-level=10 tests/integration_tests/vectorstores/test_pinecone.py --vcr-record=none
|
2023-04-07 14:28:57 +00:00
|
|
|
pytest tests/integration_tests/vectorstores/test_elasticsearch.py --vcr-record=none
|
2023-04-14 04:49:31 +00:00
|
|
|
|
2023-04-12 03:45:36 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
### Run some tests with coverage:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
pytest tests/integration_tests/vectorstores/test_elasticsearch.py --cov=langchain --cov-report=html
|
|
|
|
start "" htmlcov/index.html || open htmlcov/index.html
|
|
|
|
|
2023-04-07 14:28:57 +00:00
|
|
|
```
|