Skip to main content

AIUnitTest

PyPI version Python versions License: MIT Code style: black Imports: isort Linter: flake8 Static typing: mypy Testing: pytest Coverage CI/CD GitHub last commit GitHub repo size GitHub issues

AIUnitTest is a command-line tool that reads your pyproject.toml and test coverage data (.coverage) to generate and update missing Python unit tests using AI.

Status

The current public CLI and README still describe the v1 workflow.

AIUnitTest v2 is now being defined as a redesign around a tool-first test execution layer for coding agents. It will ship first through its own CLI client and later expose the same core to external agents. The product direction is to become the specialized testing layer that works with coding agents, instead of competing with them as a general-purpose agent. The v2 planning and architecture docs live in:

  • docs/v2/README.md
  • docs/v2/architecture.md
  • docs/v2/implementation-plan.md

How it Works

  1. Coverage Analysis: The tool uses coverage.py to identify lines of code that are not covered by your existing test suite.
  2. Source Code Chunking: It breaks down the source code into logical chunks (functions and classes).
  3. AI-Powered Test Generation: For each chunk with uncovered lines, it sends the source code and the uncovered line numbers to an AI model (like OpenAI's GPT) to generate new test cases.
  4. Test File Updates: The newly generated tests are appended to the corresponding test file.

Features

  • Coverage Analysis: Uses the Coverage.py API to identify untested lines.
  • AI-Powered Test Generation: Calls OpenAI GPT to create or enhance test cases.
  • Config-Driven: Automatically picks up coverage.run.source and pytest.ini_options.testpaths from pyproject.toml.
  • Auto Mode: The --auto flag sets source and tests directories without manual arguments.
  • Async & Parallel: Speeds up OpenAI requests for large codebases.

Installation

There are two ways to install AIUnitTest:

From PyPI

You can install the latest stable version from PyPI:

pip install AIUnitTest

Optional Dependencies

AIUnitTest supports optional features that can be installed as needed:

Basic Installation (OpenAI only)

pip install AIUnitTest

With HuggingFace Support

pip install AIUnitTest[huggingface]

With FAISS Indexing Support

pip install AIUnitTest[faiss]

All Optional Features

pip install AIUnitTest[all]

Development Dependencies

pip install AIUnitTest[dev]

You can also combine multiple extras:

pip install AIUnitTest[huggingface,faiss]

From GitHub (for the latest development version)

  1. Clone the repository:

    git clone https://github.com/ofido/AIUnitTest.git
    cd AIUnitTest
    
  2. Install the project in editable mode:

    pip install -e .
    # Or with optional dependencies:
    pip install -e .[all]
    

Usage

Automatic Mode

The easiest way to run the tool is in automatic mode. It will automatically discover your source and test folders from your pyproject.toml file.

ai-unit-test --auto

Manual Mode

You can also specify the source and test folders manually:

ai-unit-test --folders src --tests-folder tests

Generating a Test for a Specific Function

You can also generate a test for a single function:

ai-unit-test func my_module/my_file.py my_function

Indexing and Searching Tests

You can index your tests for semantic search:

ai-unit-test index

And then search for tests related to a specific query:

ai-unit-test search "my search query"

Command-Line Options

  • --folders: The source code folders to analyze.
  • --tests-folder: The folder where the tests are located.
  • --coverage-file: The path to the .coverage file.
  • --auto: Try to discover folders/tests from pyproject.toml.

Configuration

AIUnitTest uses the standard pyproject.toml file for configuration. Here are the relevant sections:

  • [tool.coverage.run]:
    • source: A list of source code folders.
  • [tool.pytest.ini_options]:
    • testpaths: A list of test folders.

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License see the LICENSE file for details.

Metadata

Release files for AIUnitTest 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for AIUnitTest 0.0.8
File Size Uploaded
aiunittest-0.0.8.tar.gz 131.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for AIUnitTest 0.0.8
File Interpreter ABI Platform
aiunittest-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 207.4 kB

Release files / aiunittest-0.0.8.tar.gz

Download URL aiunittest-0.0.8.tar.gz
Size 131.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fbcdd3ab79648bd27ff8581ea4fb6842516c0eaec442e8d10978e58b4717821a
BLAKE2b-256 checksum
How to use checksums
c08528f253bd76bda867456837d0e1c25462a1c4adf3523ca7886aa38d35d895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release files / aiunittest-0.0.8-py3-none-any.whl

Download URL aiunittest-0.0.8-py3-none-any.whl
Size 75.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3752108e3ae6f27c21939d221379e85448e51205bebb125b3c23317bd0ed195e
BLAKE2b-256 checksum
How to use checksums
f977c54c138eb3d68411668932be73f6626da9dab5a45ece641186fc2c1c6ed1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page