package tezt

  1. Overview
  2. Docs
Test framework for unit tests, integration tests, and regression tests

Install

Dune Dependency

Authors

Maintainers

Sources

tezt-4.0.0.tar.bz2
md5=643f48378265ae18b7aab4675a1e836e
sha512=f399d4d8b935fc3dcb4354596c2b7fa26a019f99c83cb4c1d48b0e26c5bc6da13b2cad9792dd50420a88b777d3b8a1d67c7ddd0457322e65d311b859be03879f

Description

Published: 15 Nov 2023

README

Tezt

Tezt (pronounced "tezty", as in "tasty" with a "z") is a test framework for OCaml. It is well suited for writing and executing unit, integration and regression tests. It integrates well with continuous integration (CI).

API Documentation

The API documentation contains an introduction to Tezt as well as documentation for all modules. It is generated from lib/tezt.ml.

Getting Started

Install

Install with opam:

opam install tezt

Write a Test

Create a file such as test/main.ml:

(* [Tezt] and its submodule [Base] are designed to be opened.
   [Tezt] is the main module of the library and it only contains submodules,
   such as [Test] which is used below.
   [Tezt.Base] contains values such as [unit] which is used below. *)
open Tezt
open Tezt.Base

(* Register as many tests as you want like this. *)
let () =
  Test.register
    (* [~__FILE__] contains the name of the file in which the test is defined.
       It allows to select tests to run based on their filename. *)
    ~__FILE__
    (* Titles uniquely identify tests so that they can be individually selected. *)
    ~title: "demo"
    (* Tags are another way to group tests together to select them. *)
    ~tags: [ "math"; "addition" ]
  @@ fun () ->
  (* Here is the actual test. *)
  if 1 + 1 <> 2 then Test.fail "expected 1 + 1 = 2, got %d" (1 + 1);
  (* Here is another way to write the same test. *)
  Check.((1 + 1 = 2) int) ~error_msg: "expected 1 + 1 = %R, got %L";
  Log.info "Math is safe today.";
  (* [unit] is [Lwt.return ()]. *)
  unit

(* Call the main function of Tezt so that it actually runs your tests. *)
let () = Test.run ()

Then create a test/dune file:

(test (name main) (libraries tezt))

You can now run your test with dune runtest. However dune runtest is limited because you cannot pass command-line arguments. Usually, you would instead run something like:

dune exec test/main.exe -- -i

This should show you:

[09:04:06.395] Math is safe today.
[09:04:06.395] [SUCCESS] (1/1) demo

The -i flag is a short-hand for --info and sets the log level so that you can see the result of the call to Log.info.

To see the list of command-line options, in particular how to select tests from the command-line, how to run them in parallel and how to produce reports, run:

dune exec test/main.exe -- --help

Dependencies (7)

  1. clap >= "0.3.0"
  2. ezjsonm >= "1.1.0"
  3. base-unix
  4. lwt >= "5.6.0"
  5. re >= "1.7.2"
  6. ocaml >= "4.12"
  7. dune >= "3.0"

Dev Dependencies (4)

  1. ocamlformat with-test & = "0.21.0"
  2. js_of_ocaml-lwt with-test
  3. js_of_ocaml with-test
  4. conf-npm with-test

Used by (58)

  1. bam
  2. bls12-381 = "18.0" | >= "19.0"
  3. dedukti >= "2.7"
  4. octez-alcotezt != "18.1"
  5. octez-bls12-381-polynomial
  6. octez-l2-libs != "18.1"
  7. octez-libs != "18.1"
  8. octez-mec
  9. octez-polynomial
  10. octez-proto-libs != "18.1"
  11. octez-protocol-017-PtNairob-libs != "18.1" & < "20.1"
  12. octez-protocol-018-Proxford-libs != "18.1"
  13. octez-protocol-019-PtParisB-libs
  14. octez-protocol-020-PsParisC-libs
  15. octez-protocol-alpha-libs != "18.1"
  16. octez-shell-libs >= "19.0"
  17. octez-smart-rollup-wasm-benchmark-lib
  18. SourceCode_ASCII
  19. tezos-baking-016-PtMumbai >= "17.1"
  20. tezos-baking-017-PtNairob
  21. tezos-baking-alpha >= "17.1"
  22. tezos-base >= "17.1"
  23. tezos-clic >= "17.1"
  24. tezos-client-016-PtMumbai >= "17.1"
  25. tezos-client-017-PtNairob
  26. tezos-client-alpha >= "17.1"
  27. tezos-client-base >= "17.1"
  28. tezos-client-base-unix >= "17.1"
  29. tezos-context >= "17.1"
  30. tezos-crypto >= "17.1"
  31. tezos-crypto-dal >= "17.1"
  32. tezos-error-monad >= "17.1"
  33. tezos-hacl >= "17.1"
  34. tezos-layer2-store >= "17.1"
  35. tezos-lwt-result-stdlib >= "17.1"
  36. tezos-mockup >= "17.1"
  37. tezos-openapi >= "20.1"
  38. tezos-p2p >= "17.1"
  39. tezos-protocol-environment >= "17.1"
  40. tezos-proxy >= "17.1"
  41. tezos-proxy-server-config >= "17.1" & != "18.1"
  42. tezos-requester >= "17.1"
  43. tezos-rpc-http-server >= "17.1"
  44. tezos-sapling >= "17.1"
  45. tezos-scoru-wasm-helpers < "17.1"
  46. tezos-shell >= "17.1"
  47. tezos-shell-services >= "17.1"
  48. tezos-signer-backends >= "17.1"
  49. tezos-stdlib >= "17.1"
  50. tezos-stdlib-unix >= "17.1"
  51. tezos-store >= "17.1"
  52. tezos-version >= "17.1"
  53. tezos-webassembly-interpreter >= "17.1"
  54. tezos-workers >= "17.1"
  55. tezt-bam
  56. tezt-performance-regression
  57. tezt-tezos != "18.1"
  58. universo

Conflicts (2)

  1. js_of_ocaml-lwt < "4.0.0"
  2. js_of_ocaml < "4.0.0"
OCaml

Innovation. Community. Security.