Producer for Test Anything Protocol output in Python.
from tap_producer import TAP with TAP() as t: t.ok('passed') t.ok('also passed')
The TAP class automatically counts test points at call time for TAP version 12, 13, and 14.
from tap_producer import TAP @TAP(plan=1, version=14) def f() -> None: TAP.ok('reason') f()
TAP can also be used as a function decorator.
from tap_producer import TAP TAP.version(14) TAP.ok('passed') TAP.end()
The TAP class can also be used as a purely functional API. Normally TAP calls end()
on its own.
from tap_producer import TAP with TAP() as t: t.ok('passed').comment('debug information') if FAIL_CONDITION: t.not_ok('did not pass') t.bail_out()
TAP using version 12 supports plan, ok, not ok, diagnostic comment, and bail out functionality.
with TAP(version=13).subtest('subtest') as st: st.plan(count=1, skip_count=0).ok('ok', {'yaml-key': 'yaml-val'})
TAP version 13 supports the aforementioned as well as subtest context manager and YAML diagnostic output.
from tap_producer import TAP with TAP() as t: with t.suppress(): t.ok('passed but suppressed') with t.strict() t.not_ok('this is now a Python exception')
TAP-Producer also includes two decorators, a suppress context manager for suppressing TAP output and a strict context manager for raising not ok test cases to Python errors.
Licensed Apache-2.0 WITH LLVM-exception, no NOTICE file needed if you want to vendor TAP-Producer into your project, see LICENSE.txt for more information.
