Welcome to klara’s documentation!

Note

Klara is still in early experimental stage, notable missing features are loop, comprehension, module import, exceptions and many more. See limitation for full list. It probably will not run on real world projects, so it’s best to cherry-pick a few interesting functions to generate the corresponding test case.

Klara is a static analysis tools to automatically generate test cases, based on an SMT solver (z3), with a powerful AST level inference system. Klara will take a python file as input and generate a corresponding test file in pytest format, that attempts to cover all return values of the input file’s functions. For example, the following function in file test.py:

def triangle(x: int, y: int, z: int) -> str:
    if x == y == z:
        return "Equilateral triangle"
    elif x == y or y == z or x == z:
        return "Isosceles triangle"
    else:
        return "Scalene triangle"

will generate:

import test


def test_triangle_0():
    assert test.triangle(0, 0, 0) == 'Equilateral triangle'
    assert test.triangle(0, 0, 1) == 'Isosceles triangle'
    assert test.triangle(2, 0, 1) == 'Scalene triangle'

The User Guide

The sections here will explain how to install and use Klara, and include steps for extending Klara.

The Contributor Guide

The sections here will explain the internals workings of Klara

The API

Documentations for modules, classes and functions.

Indices and tables