# TestTeller RAG Agent
[](https://pypi.org/project/testteller/)
[](https://www.python.org/downloads/)
[](https://www.docker.com/)
[](https://github.com/iAviPro/testteller-rag-agent/actions/workflows/test-unit.yml)
[](https://pepy.tech/project/testteller)
[](https://opensource.org/licenses/Apache-2.0)
TestTeller RAG Agent is a versatile CLI-based RAG (Retrieval Augmented Generation) agent designed to generate software test cases. It supports multiple LLM providers including Google Gemini, OpenAI, Anthropic Claude, and local Llama models via Ollama. The agent uses ChromaDB as a vector store and can process various input sources, including PRD documentation, API contracts, technical design documents (HLD/LLD), and code from GitHub repositories or local folders.
## Features
### Multiple LLM Provider Support
- **Google Gemini** (Default): Fast and cost-effective with support for all Gemini models and Google embeddings
- **OpenAI**: High-quality responses with support for all GPT models and OpenAI embeddings
- **Anthropic Claude**: Advanced reasoning capabilities with support for all Claude models (uses Google or OpenAI for embeddings)
- **Local Llama**: Privacy-focused local inference with support for all Llama models via Ollama
- **Flexible Model Selection**: Configure any supported model from each provider based on your needs and use case
- **Automatic Fallbacks**: Built-in retry mechanisms and error handling for robust performance
### Comprehensive Test Generation
- **End-to-End Tests**: Complete user journey validation
- **Integration Tests**: Component interaction and API contract verification
- **Technical Tests**: System limitations, edge cases, and performance validation
- **Mocked System Tests**: Isolated component testing with mocked dependencies
### Document and Code Processing
- **Multi-format Document Support**: PDF, DOCX, XLSX, MD, TXT files
- **Code Analysis**: GitHub repositories (public/private) and local codebases
- **Multiple Programming Languages**: Python, JavaScript, TypeScript, Java, Go, Rust, C++, C#, Ruby, PHP
- **Advanced RAG Pipeline**: Context-aware prompt engineering and streaming responses
## Prerequisites
- Python 3.11 or higher
- Docker and Docker Compose (for containerized deployment)
- At least one LLM provider API key:
- Google Gemini: [Get API key](https://aistudio.google.com/)
- OpenAI: [Get API key](https://platform.openai.com/api-keys)
- Anthropic Claude: [Get API key](https://console.anthropic.com/)
- Ollama: [Install locally](https://ollama.ai/)
- GitHub Personal Access Token (optional, for private repositories)
## Installation
### Option 1: Install from PyPI
```bash
pip install testteller
```
### Option 2: Install from Source
```bash
git clone https://github.com/iAviPro/testteller-rag-agent.git
cd testteller-rag-agent
pip install -e .
```
### Option 3: Docker Installation
```bash
git clone https://github.com/iAviPro/testteller-rag-agent.git
cd testteller-rag-agent
cp .env.example .env
# Edit .env with your API keys
docker-compose up -d
```
## Quick Start
1. **Configure the Agent**
```bash
testteller configure
```
2. **For Llama Users: Setup Ollama**
**Local Installation:**
```bash
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Start service and install models (example models)
ollama serve
ollama pull llama3.2 # or any preferred Llama model
ollama pull <your-preferred-model>
```
**Remote/Docker Ollama:**
TestTeller supports connecting to Ollama running on Docker or remote servers. During configuration, you can specify the Ollama server URL and port separately:
- **Local**: URL: `localhost` (default), Port: `11434` (default) → `http://localhost:11434`
- **Docker**: URL: `docker-host` or `host.docker.internal`, Port: `11434` → `http://docker-host:11434`
- **Remote**: URL: `remote-server`, Port: `11434` → `http://remote-server:11434`
The configuration wizard will ask for URL and Port separately, then automatically form the complete URL:PORT combination.
3. **Ingest Documentation or Code**
```bash
# Ingest documents
testteller ingest-docs path/to/document.pdf --collection-name my_collection
# Ingest code from GitHub
testteller ingest-code https://github.com/owner/repo.git --collection-name my_collection
# Ingest local code
testteller ingest-code ./local/code/folder --collection-name my_collection
```
4. **Generate Test Cases**
```bash
testteller generate "Create API integration tests for user authentication" --collection-name my_collection --output-file tests.md
```
## Configuration
### Environment Variables
The application uses a `.env` file for configuration. Run `testteller configure` to set up interactively, or create a `.env` file manually with the following variables:
| Variable | Description | Default | Required |
|----------|-------------|---------|----------|
| **LLM Provider Selection** | | | |
| `LLM_PROVIDER` | LLM provider to use (`gemini`, `openai`, `claude`, `llama`) | `gemini` | No |
| **Google Gemini Configuration** | | | |
| `GOOGLE_API_KEY` | Google Gemini API key | - | Yes (for Gemini) |
| `GEMINI_EMBEDDING_MODEL` | Gemini embedding model | Configure as needed | No |
| `GEMINI_GENERATION_MODEL` | Gemini generation model | Configure as needed | No |
| **OpenAI Configuration** | | | |
| `OPENAI_API_KEY` | OpenAI API key | - | Yes (for OpenAI/Claude) |
| `OPENAI_EMBEDDING_MODEL` | OpenAI embedding model | Configure as needed | No |
| `OPENAI_GENERATION_MODEL` | OpenAI generation model | Configure as needed | No |
| **Anthropic Claude Configuration** | | | |
| `CLAUDE_API_KEY` | Anthropic Claude API key | - | Yes (for Claude) |
| `CLAUDE_GENERATION_MODEL` | Claude generation model | Configure as needed | No |
| `CLAUDE_EMBEDDING_PROVIDER` | Embedding provider for Claude | `google` | No |
| **Llama/Ollama Configuration** | | | |
| `LLAMA_EMBEDDING_MODEL` | Llama embedding model | Configure as needed | No |
| `LLAMA_GENERATION_MODEL` | Llama generation model | Configure as needed | No |
| `OLLAMA_BASE_URL` | Ollama server URL (local/remote/Docker) | `http://localhost:11434` | No |
| **GitHub Integration** | | | |
| `GITHUB_TOKEN` | GitHub Personal Access Token | - | No |
| **ChromaDB Configuration** | | | |
| `CHROMA_DB_HOST` | ChromaDB host | `localhost` | No |
| `CHROMA_DB_PORT` | ChromaDB port | `8000` | No |
| `CHROMA_DB_USE_REMOTE` | Use remote ChromaDB | `false` | No |
| `CHROMA_DB_PERSIST_DIRECTORY` | Local ChromaDB directory | `./chroma_data` | No |
| `DEFAULT_COLLECTION_NAME` | Default collection name | `test_collection` | No |
| **Document Processing** | | | |
| `CHUNK_SIZE` | Document chunk size | `1000` | No |
| `CHUNK_OVERLAP` | Chunk overlap size | `200` | No |
| `CODE_EXTENSIONS` | Code file extensions | `.py,.js,.ts,.java,.go,.rs,.cpp,.c,.cs,.rb,.php` | No |
| `TEMP_CLONE_DIR_BASE` | Temporary clone directory | `./temp_cloned_repos` | No |
| **Output Configuration** | | | |
| `OUTPUT_FILE_PATH` | Default output file path | `testteller-testcases.md` | No |
| **API Retry Configuration** | | | |
| `API_RETRY_ATTEMPTS` | Number of retry attempts | `3` | No |
| `API_RETRY_WAIT_SECONDS` | Wait time between retries | `2` | No |
| **Logging Configuration** | | | |
| `LOG_LEVEL` | Logging level | `INFO` | No |
| `LOG_FORMAT` | Logging format | `json` | No |
**Provider-Specific Notes:**
- **Gemini**: Only requires `GOOGLE_API_KEY`
- **OpenAI**: Only requires `OPENAI_API_KEY`
- **Claude**: Requires `CLAUDE_API_KEY` and API key for selected embedding provider (Google or OpenAI)
- **Important**: Claude uses other providers for embeddings since it doesn't have its own embedding API
- If you select `google` as embedding provider, you need `GOOGLE_API_KEY`
- If you select `openai` as embedding provider, you need `OPENAI_API_KEY`
- Run `testteller configure` to set up Claude configuration interactively
- **Llama**: No API key required, but needs Ollama installation and model downloads
- Supports local installation (`http://localhost:11434`)
- Supports remote/Docker connections (e.g., `http://remote-server:11434`)
- Configure URL and Port separately via `testteller configure` (URL defaults to `localhost`, Port defaults to `11434`)
- Complete URL is automatically formed as `http://URL:PORT` and saved as `OLLAMA_BASE_URL` environment variable
- **GitHub**: Only set `GITHUB_TOKEN` if accessing private repositories
## Available Commands
### Configuration
```bash
# Interactive configuration wizard
testteller configure
# Show version
testteller --version
# Show help
testteller --help
```
### Document and Code Ingestion
```bash
# Ingest documents
testteller ingest-docs path/to/document.pdf --collection-name my_collection
testteller ingest-docs path/to/docs/directory --collection-name my_collection
# Ingest code from GitHub or local folder
testteller ingest-code https://github.com/owner/repo.git --collection-name my_collection
testteller ingest-code ./local/code/folder --collection-name my_collection --no-cleanup-github
```
### Test Case Generation
```bash
# Generate test cases
testteller generate "Create API integration tests for user authentication" --collection-name my_collection
# Generate with custom output file
testteller generate "Create technical tests for login flow" --collection-name my_collection --output-file tests.md
# Generate with specific number of retrieved documents
testteller generate "Create more than 10 end-to-end tests" --collection-name my_collection --num-retrieved 10
```
### Data Management
```bash
# Check collection status
testteller status --collection-name my_collection
# Clear collection data
testteller clear-data --collection-name my_collection --force
```
## Docker Usage
### Using Docker Compose (Recommended)
1. **Setup**
```bash
git clone https://github.com/iAviPro/testteller-rag-agent.git
cd testteller-rag-agent
cp .env.example .env
# Edit .env with your API keys and preferred LLM provider
```
2. **Start Services**
```bash
# For cloud providers (Gemini, OpenAI, Claude)
docker-compose up -d
# For Llama with local Docker Ollama (uncomment ollama service in docker-compose.yml first)
docker-compose up -d
docker-compose exec ollama ollama pull <your-preferred-model>
docker-compose exec ollama ollama pull <your-preferred-model>
# For Llama with remote Ollama (set OLLAMA_BASE_URL in .env)
# Example: OLLAMA_BASE_URL=http://remote-server:11434
docker-compose up -d app
```
3. **Run Commands**
```bash
# All commands use the same format with docker-compose exec
docker-compose exec app testteller configure
docker-compose exec app testteller ingest-docs /path/to/doc.pdf --collection-name my_collection
docker-compose exec app testteller generate "Create API tests" --collection-name my_collection
docker-compose exec app testteller status --collection-name my_collection
```
### Docker Management
```bash
# View logs
docker-compose logs app
docker-compose logs chromadb
# Stop services
docker-compose down
# Remove all data
docker-compose down -v
```
## Testing
TestTeller includes a comprehensive test suite for all supported LLM providers.
### Running Tests
```bash
# Install test dependencies
pip install -r requirements-test.txt
# Run all tests
pytest
# Run with coverage
pytest --cov=testteller --cov-report=html
# Interactive test runner
python tests/test_runner.py
```
For detailed testing documentation, see [TESTING.md](TESTING.md).
## Troubleshooting
### Common Issues
**API Key Errors**
- Ensure correct API keys are set in `.env` file
- For Claude, `CLAUDE_API_KEY` is required plus API key for the embedding provider:
- If using `google` for embeddings: `GOOGLE_API_KEY` is required
- If using `openai` for embeddings: `OPENAI_API_KEY` is required
- Run `testteller configure` to verify configuration and set up Claude properly
- Common Claude error: "Google/OpenAI API key is required for embeddings when using Claude"
**ChromaDB Connection Issues**
```bash
# Check ChromaDB health
curl http://localhost:8000/api/v1/heartbeat
# For Docker
docker-compose logs chromadb
docker-compose restart chromadb
```
**Ollama Issues (Llama Provider)**
```bash
# Check Ollama service
ollama list
# Install missing models
ollama pull llama3.2:3b
ollama pull llama3.2:1b
# For Docker
docker-compose exec ollama ollama list
```
**Permission Issues**
```bash
# Fix volume permissions
sudo chown -R 1000:1000 ./chroma_data
sudo chmod -R 755 ./temp_cloned_repos
```
## License
This project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details.
Raw data
{
"_id": null,
"home_page": "https://github.com/iAviPro/testteller-rag-agent",
"name": "testteller",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "testing, rag, llm, generative ai, test case generation, qa, automation, testcase, testteller, ai testing, rag agent, knowledge base, document ingestion, code ingestion, testteller-rag-agent, testteller rag agent, testteller_rag_agent",
"author": "Aviral Nigam",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/84/7b/19ded13907bad4e0e1332a425e16170c92706263a0d06096e435e7cd5c97/testteller-1.2.1.tar.gz",
"platform": null,
"description": "# TestTeller RAG Agent\n\n[](https://pypi.org/project/testteller/)\n[](https://www.python.org/downloads/)\n[](https://www.docker.com/)\n[](https://github.com/iAviPro/testteller-rag-agent/actions/workflows/test-unit.yml)\n[](https://pepy.tech/project/testteller)\n[](https://opensource.org/licenses/Apache-2.0)\n\nTestTeller RAG Agent is a versatile CLI-based RAG (Retrieval Augmented Generation) agent designed to generate software test cases. It supports multiple LLM providers including Google Gemini, OpenAI, Anthropic Claude, and local Llama models via Ollama. The agent uses ChromaDB as a vector store and can process various input sources, including PRD documentation, API contracts, technical design documents (HLD/LLD), and code from GitHub repositories or local folders.\n\n## Features\n\n### Multiple LLM Provider Support\n- **Google Gemini** (Default): Fast and cost-effective with support for all Gemini models and Google embeddings\n- **OpenAI**: High-quality responses with support for all GPT models and OpenAI embeddings\n- **Anthropic Claude**: Advanced reasoning capabilities with support for all Claude models (uses Google or OpenAI for embeddings)\n- **Local Llama**: Privacy-focused local inference with support for all Llama models via Ollama\n- **Flexible Model Selection**: Configure any supported model from each provider based on your needs and use case\n- **Automatic Fallbacks**: Built-in retry mechanisms and error handling for robust performance\n\n### Comprehensive Test Generation\n- **End-to-End Tests**: Complete user journey validation\n- **Integration Tests**: Component interaction and API contract verification\n- **Technical Tests**: System limitations, edge cases, and performance validation\n- **Mocked System Tests**: Isolated component testing with mocked dependencies\n\n### Document and Code Processing\n- **Multi-format Document Support**: PDF, DOCX, XLSX, MD, TXT files\n- **Code Analysis**: GitHub repositories (public/private) and local codebases\n- **Multiple Programming Languages**: Python, JavaScript, TypeScript, Java, Go, Rust, C++, C#, Ruby, PHP\n- **Advanced RAG Pipeline**: Context-aware prompt engineering and streaming responses\n\n\n\n## Prerequisites\n\n- Python 3.11 or higher\n- Docker and Docker Compose (for containerized deployment)\n- At least one LLM provider API key:\n - Google Gemini: [Get API key](https://aistudio.google.com/)\n - OpenAI: [Get API key](https://platform.openai.com/api-keys)\n - Anthropic Claude: [Get API key](https://console.anthropic.com/)\n - Ollama: [Install locally](https://ollama.ai/)\n- GitHub Personal Access Token (optional, for private repositories)\n\n## Installation\n\n### Option 1: Install from PyPI\n\n```bash\npip install testteller\n```\n\n### Option 2: Install from Source\n\n```bash\ngit clone https://github.com/iAviPro/testteller-rag-agent.git\ncd testteller-rag-agent\npip install -e .\n```\n\n### Option 3: Docker Installation\n\n```bash\ngit clone https://github.com/iAviPro/testteller-rag-agent.git\ncd testteller-rag-agent\ncp .env.example .env\n# Edit .env with your API keys\ndocker-compose up -d\n```\n\n## Quick Start\n\n1. **Configure the Agent**\n```bash\ntestteller configure\n```\n\n2. **For Llama Users: Setup Ollama**\n\n**Local Installation:**\n```bash\n# Install Ollama\ncurl -fsSL https://ollama.ai/install.sh | sh\n\n# Start service and install models (example models)\nollama serve\nollama pull llama3.2 # or any preferred Llama model\nollama pull <your-preferred-model>\n```\n\n**Remote/Docker Ollama:**\nTestTeller supports connecting to Ollama running on Docker or remote servers. During configuration, you can specify the Ollama server URL and port separately:\n- **Local**: URL: `localhost` (default), Port: `11434` (default) \u2192 `http://localhost:11434`\n- **Docker**: URL: `docker-host` or `host.docker.internal`, Port: `11434` \u2192 `http://docker-host:11434`\n- **Remote**: URL: `remote-server`, Port: `11434` \u2192 `http://remote-server:11434`\n\nThe configuration wizard will ask for URL and Port separately, then automatically form the complete URL:PORT combination.\n\n3. **Ingest Documentation or Code**\n```bash\n# Ingest documents\ntestteller ingest-docs path/to/document.pdf --collection-name my_collection\n\n# Ingest code from GitHub\ntestteller ingest-code https://github.com/owner/repo.git --collection-name my_collection\n\n# Ingest local code\ntestteller ingest-code ./local/code/folder --collection-name my_collection\n```\n\n4. **Generate Test Cases**\n```bash\ntestteller generate \"Create API integration tests for user authentication\" --collection-name my_collection --output-file tests.md\n```\n\n## Configuration\n\n### Environment Variables\n\nThe application uses a `.env` file for configuration. Run `testteller configure` to set up interactively, or create a `.env` file manually with the following variables:\n\n| Variable | Description | Default | Required |\n|----------|-------------|---------|----------|\n| **LLM Provider Selection** | | | |\n| `LLM_PROVIDER` | LLM provider to use (`gemini`, `openai`, `claude`, `llama`) | `gemini` | No |\n| **Google Gemini Configuration** | | | |\n| `GOOGLE_API_KEY` | Google Gemini API key | - | Yes (for Gemini) |\n| `GEMINI_EMBEDDING_MODEL` | Gemini embedding model | Configure as needed | No |\n| `GEMINI_GENERATION_MODEL` | Gemini generation model | Configure as needed | No |\n| **OpenAI Configuration** | | | |\n| `OPENAI_API_KEY` | OpenAI API key | - | Yes (for OpenAI/Claude) |\n| `OPENAI_EMBEDDING_MODEL` | OpenAI embedding model | Configure as needed | No |\n| `OPENAI_GENERATION_MODEL` | OpenAI generation model | Configure as needed | No |\n| **Anthropic Claude Configuration** | | | |\n| `CLAUDE_API_KEY` | Anthropic Claude API key | - | Yes (for Claude) |\n| `CLAUDE_GENERATION_MODEL` | Claude generation model | Configure as needed | No |\n| `CLAUDE_EMBEDDING_PROVIDER` | Embedding provider for Claude | `google` | No |\n| **Llama/Ollama Configuration** | | | |\n| `LLAMA_EMBEDDING_MODEL` | Llama embedding model | Configure as needed | No |\n| `LLAMA_GENERATION_MODEL` | Llama generation model | Configure as needed | No |\n| `OLLAMA_BASE_URL` | Ollama server URL (local/remote/Docker) | `http://localhost:11434` | No |\n| **GitHub Integration** | | | |\n| `GITHUB_TOKEN` | GitHub Personal Access Token | - | No |\n| **ChromaDB Configuration** | | | |\n| `CHROMA_DB_HOST` | ChromaDB host | `localhost` | No |\n| `CHROMA_DB_PORT` | ChromaDB port | `8000` | No |\n| `CHROMA_DB_USE_REMOTE` | Use remote ChromaDB | `false` | No |\n| `CHROMA_DB_PERSIST_DIRECTORY` | Local ChromaDB directory | `./chroma_data` | No |\n| `DEFAULT_COLLECTION_NAME` | Default collection name | `test_collection` | No |\n| **Document Processing** | | | |\n| `CHUNK_SIZE` | Document chunk size | `1000` | No |\n| `CHUNK_OVERLAP` | Chunk overlap size | `200` | No |\n| `CODE_EXTENSIONS` | Code file extensions | `.py,.js,.ts,.java,.go,.rs,.cpp,.c,.cs,.rb,.php` | No |\n| `TEMP_CLONE_DIR_BASE` | Temporary clone directory | `./temp_cloned_repos` | No |\n| **Output Configuration** | | | |\n| `OUTPUT_FILE_PATH` | Default output file path | `testteller-testcases.md` | No |\n| **API Retry Configuration** | | | |\n| `API_RETRY_ATTEMPTS` | Number of retry attempts | `3` | No |\n| `API_RETRY_WAIT_SECONDS` | Wait time between retries | `2` | No |\n| **Logging Configuration** | | | |\n| `LOG_LEVEL` | Logging level | `INFO` | No |\n| `LOG_FORMAT` | Logging format | `json` | No |\n\n**Provider-Specific Notes:**\n- **Gemini**: Only requires `GOOGLE_API_KEY`\n- **OpenAI**: Only requires `OPENAI_API_KEY`\n- **Claude**: Requires `CLAUDE_API_KEY` and API key for selected embedding provider (Google or OpenAI)\n - **Important**: Claude uses other providers for embeddings since it doesn't have its own embedding API\n - If you select `google` as embedding provider, you need `GOOGLE_API_KEY`\n - If you select `openai` as embedding provider, you need `OPENAI_API_KEY`\n - Run `testteller configure` to set up Claude configuration interactively\n- **Llama**: No API key required, but needs Ollama installation and model downloads\n - Supports local installation (`http://localhost:11434`) \n - Supports remote/Docker connections (e.g., `http://remote-server:11434`)\n - Configure URL and Port separately via `testteller configure` (URL defaults to `localhost`, Port defaults to `11434`)\n - Complete URL is automatically formed as `http://URL:PORT` and saved as `OLLAMA_BASE_URL` environment variable\n- **GitHub**: Only set `GITHUB_TOKEN` if accessing private repositories\n\n## Available Commands\n\n### Configuration\n```bash\n# Interactive configuration wizard\ntestteller configure\n\n# Show version\ntestteller --version\n\n# Show help\ntestteller --help\n```\n\n### Document and Code Ingestion\n```bash\n# Ingest documents\ntestteller ingest-docs path/to/document.pdf --collection-name my_collection\ntestteller ingest-docs path/to/docs/directory --collection-name my_collection\n\n# Ingest code from GitHub or local folder\ntestteller ingest-code https://github.com/owner/repo.git --collection-name my_collection\ntestteller ingest-code ./local/code/folder --collection-name my_collection --no-cleanup-github\n```\n\n### Test Case Generation\n```bash\n# Generate test cases\ntestteller generate \"Create API integration tests for user authentication\" --collection-name my_collection\n\n# Generate with custom output file\ntestteller generate \"Create technical tests for login flow\" --collection-name my_collection --output-file tests.md\n\n# Generate with specific number of retrieved documents\ntestteller generate \"Create more than 10 end-to-end tests\" --collection-name my_collection --num-retrieved 10\n```\n\n### Data Management\n```bash\n# Check collection status\ntestteller status --collection-name my_collection\n\n# Clear collection data\ntestteller clear-data --collection-name my_collection --force\n```\n\n## Docker Usage\n\n### Using Docker Compose (Recommended)\n\n1. **Setup**\n```bash\ngit clone https://github.com/iAviPro/testteller-rag-agent.git\ncd testteller-rag-agent\ncp .env.example .env\n# Edit .env with your API keys and preferred LLM provider\n```\n\n2. **Start Services**\n```bash\n# For cloud providers (Gemini, OpenAI, Claude)\ndocker-compose up -d\n\n# For Llama with local Docker Ollama (uncomment ollama service in docker-compose.yml first)\ndocker-compose up -d\ndocker-compose exec ollama ollama pull <your-preferred-model>\ndocker-compose exec ollama ollama pull <your-preferred-model>\n\n# For Llama with remote Ollama (set OLLAMA_BASE_URL in .env)\n# Example: OLLAMA_BASE_URL=http://remote-server:11434\ndocker-compose up -d app\n```\n\n3. **Run Commands**\n```bash\n# All commands use the same format with docker-compose exec\ndocker-compose exec app testteller configure\ndocker-compose exec app testteller ingest-docs /path/to/doc.pdf --collection-name my_collection\ndocker-compose exec app testteller generate \"Create API tests\" --collection-name my_collection\ndocker-compose exec app testteller status --collection-name my_collection\n```\n\n### Docker Management\n```bash\n# View logs\ndocker-compose logs app\ndocker-compose logs chromadb\n\n# Stop services\ndocker-compose down\n\n# Remove all data\ndocker-compose down -v\n```\n\n## Testing\n\nTestTeller includes a comprehensive test suite for all supported LLM providers.\n\n### Running Tests\n\n```bash\n# Install test dependencies\npip install -r requirements-test.txt\n\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=testteller --cov-report=html\n\n# Interactive test runner\npython tests/test_runner.py\n```\n\nFor detailed testing documentation, see [TESTING.md](TESTING.md).\n\n## Troubleshooting\n\n### Common Issues\n\n**API Key Errors**\n- Ensure correct API keys are set in `.env` file\n- For Claude, `CLAUDE_API_KEY` is required plus API key for the embedding provider:\n - If using `google` for embeddings: `GOOGLE_API_KEY` is required\n - If using `openai` for embeddings: `OPENAI_API_KEY` is required\n- Run `testteller configure` to verify configuration and set up Claude properly\n- Common Claude error: \"Google/OpenAI API key is required for embeddings when using Claude\"\n\n**ChromaDB Connection Issues**\n```bash\n# Check ChromaDB health\ncurl http://localhost:8000/api/v1/heartbeat\n\n# For Docker\ndocker-compose logs chromadb\ndocker-compose restart chromadb\n```\n\n**Ollama Issues (Llama Provider)**\n```bash\n# Check Ollama service\nollama list\n\n# Install missing models\nollama pull llama3.2:3b\nollama pull llama3.2:1b\n\n# For Docker\ndocker-compose exec ollama ollama list\n```\n\n**Permission Issues**\n```bash\n# Fix volume permissions\nsudo chown -R 1000:1000 ./chroma_data\nsudo chmod -R 755 ./temp_cloned_repos\n```\n\n## License\n\nThis project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details.\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "TestTeller : A versatile RAG AI agent for generating test cases from project documentation and code, supporting multiple LLM providers including Gemini, OpenAI, Claude, and Llama.",
"version": "1.2.1",
"project_urls": {
"Bug Tracker": "https://github.com/iAviPro/testteller-rag-agent/issues",
"Homepage": "https://github.com/iAviPro/testteller-rag-agent"
},
"split_keywords": [
"testing",
" rag",
" llm",
" generative ai",
" test case generation",
" qa",
" automation",
" testcase",
" testteller",
" ai testing",
" rag agent",
" knowledge base",
" document ingestion",
" code ingestion",
" testteller-rag-agent",
" testteller rag agent",
" testteller_rag_agent"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8d568bf2660f71a68ebd604bff1369631f068c44d9f68fc7422f6d14efec98f0",
"md5": "279c4af455cee2fa76d0c52ea43ae2b2",
"sha256": "79e87e9dffef33d984c8bd75f96cf8b6dca3de9549b4a0f7b2b27a2d067d4f9a"
},
"downloads": -1,
"filename": "testteller-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "279c4af455cee2fa76d0c52ea43ae2b2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 60469,
"upload_time": "2025-07-14T19:37:57",
"upload_time_iso_8601": "2025-07-14T19:37:57.287069Z",
"url": "https://files.pythonhosted.org/packages/8d/56/8bf2660f71a68ebd604bff1369631f068c44d9f68fc7422f6d14efec98f0/testteller-1.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "847b19ded13907bad4e0e1332a425e16170c92706263a0d06096e435e7cd5c97",
"md5": "6a6973187634a0017e47861f00660055",
"sha256": "82eda85a92d8fc11513b25b9d4d8967d23a362f9cd2e3e3d12891ff7d0eecab6"
},
"downloads": -1,
"filename": "testteller-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "6a6973187634a0017e47861f00660055",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 59097,
"upload_time": "2025-07-14T19:37:58",
"upload_time_iso_8601": "2025-07-14T19:37:58.965027Z",
"url": "https://files.pythonhosted.org/packages/84/7b/19ded13907bad4e0e1332a425e16170c92706263a0d06096e435e7cd5c97/testteller-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-14 19:37:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "iAviPro",
"github_project": "testteller-rag-agent",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "google-generativeai",
"specs": []
},
{
"name": "chromadb",
"specs": []
},
{
"name": "langchain",
"specs": []
},
{
"name": "langchain-google-genai",
"specs": []
},
{
"name": "python-docx",
"specs": []
},
{
"name": "PyMuPDF",
"specs": []
},
{
"name": "openpyxl",
"specs": []
},
{
"name": "GitPython",
"specs": []
},
{
"name": "typer",
"specs": []
},
{
"name": "python-dotenv",
"specs": []
},
{
"name": "pydantic",
"specs": []
},
{
"name": "pydantic-settings",
"specs": []
},
{
"name": "tenacity",
"specs": []
},
{
"name": "python-json-logger",
"specs": []
},
{
"name": "tiktoken",
"specs": []
},
{
"name": "aiofiles",
"specs": []
},
{
"name": "setuptools",
"specs": []
},
{
"name": "openai",
"specs": []
},
{
"name": "anthropic",
"specs": []
},
{
"name": "httpx",
"specs": []
}
],
"lcname": "testteller"
}