Spaces:
Running
Running
# 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 | |
# add package and install it after adding: | |
poetry add tiktoken@latest --group "test_integration" && poetry install --with test_integration | |
``` | |
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 | |
``` | |
### Prepare environment variables for local testing: | |
- copy `tests/.env.example` to `tests/.env` | |
- set variables in `tests/.env` file, e.g `OPENAI_API_KEY` | |
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 | |
pytest --log-cli-level=10 tests/integration_tests/vectorstores/test_pinecone.py --vcr-record=none | |
pytest tests/integration_tests/vectorstores/test_elasticsearch.py --vcr-record=none | |
``` | |
### 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 | |
``` |