package testo

  1. Overview
  2. Docs
Test framework for OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

testo-0.1.0.tbz
sha256=a156a3ac637e09e57c44a92f4f10723d2f509d237105b10a0120fca3447887b6
sha512=f236afc247af23d55ca38a4611206d3daab5ef463bbea3ab07ecec6196bd92a53f7e997d348f40534911641558383d8c85ac2ab7607514dd6b90835c8e3f7294

Description

Testo is a test framework for OCaml providing new subcommands for capturing, checking, and approving the output of tests.

Published: 12 Nov 2024

README

Testo

🚧 This project hasn't been released on Opam yet, and is still subject to frequent interface changes.

Documentation

Features

Testo is a test framework for OCaml that takes inspiration from its predecessor Alcotest and from pytest. Features include:

  • support for explicit XFAIL tests i.e. tests that are expected to fail, indicating that they should be fixed eventually;

  • support for test snapshots i.e. persistent storage of captured stdout or stderr;

  • reviewing and approving tests without re-running them;

  • nested test suites;

  • various ways to select tests;

  • parallel execution (using multiprocessing);

  • supports OCaml >= 4.08.

Like with Alcotest, a test executable is generated from a list of tests written in OCaml. The function to interpret the command line and run things is Testo.interpret_argv. The core subcommands supported by a test executable are:

  • run: run tests

  • status: check the status of the tests without re-running them

  • approve: approve test output and make it the new reference

A test is fundamentally a name and test function of type unit -> unit. A test is considered successful if the test function returns normally and is considered failed if it raises an exception. A test is created with Testo.create which takes a variety of options in addition to the name and the test function.

Testo doesn't provide a library for writing assertions. Using the Alcotest module for this is recommended. For example, checking that some test result res equals an expected value of 42 is written as:

Alcotest.(check int) "equal" 42 res;

This raises an exception that is turned into a nice error message.

Dependencies (6)

  1. testo-util
  2. re >= "1.10.0"
  3. fpath
  4. cmdliner >= "1.1.0"
  5. ocaml >= "4.08.0"
  6. dune >= "3.7"

Dev Dependencies (2)

  1. odoc with-doc
  2. alcotest with-test

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.