• fix unlocking of explicit features


  • htf is certified for ISO/TR 80002-2: Medical device software - Part 2: Validation of software for medical device quality systems. See Certifications documentation for more information.


ISO/TR 80002-2 applies to any software used in device design, testing, component acceptance, manufacturing, labelling, packaging, distribution and complaint handling or to automate any other aspect of a medical device quality system as described in ISO 13485.

ISO/TR 80002-2 applies to

  • software used in the quality management system,

  • software used in production and service provision, and

  • software used for the monitoring and measurement of requirements.

It does not apply to

  • software used as a component, part or accessory of a medical device, or

  • software that is itself a medical device.


  • improve handling of module names for discovered files

  • allow relative imports in test files

  • fix a rare edge case during test discovery where tests were collected twice


  • use docutils==0.20.1


  • add support for Python 3.12



  • add complete support for asyncio for tests, fixtures, steps, etc.

  • add type hints

  • remove all legacy code

  • improve assertion formatting

  • improve exception formatting

  • add options to not open the browser automatically for Interactive Testing.

  • add async htf.fixtures.sleep fixture

  • htf.retry is a coroutine now and htf.retry_sync can be used instead to be backward compatible

  • update all htf-module versions

  • update dependencies


htf-4 is not fully backwards compatible to htf-3!

  • drop support for Python 3.7 and Python 3.8 (Raspberry Pi OS uses Python 3.9 now so this is not needed anymore)

  • PEP 8: all names are PEP-8-ified and camel-case aliases have been removed

  • some decorators now only return coroutines (but if they are only used as documented you will not have to change anything)

  • remote logo parameter from HTML test report

  • the parameter names for htf.periodic changed

  • htf.TestCase now expects set up and tear down methods in snake case: set_up(), set_up_class, tear_down and tear_down_class to be compatible to PEP 8

  • all camel case assertion methods were removed from htf.TestCase to be compatible to PEP 8

  • failfast: bool and --failfast have been renamed to fail_fast: bool and --fail-fast



htf-3.0 reached the end of life. Please upgrade to htf-4.0 which can be used with little changes.

  • update dependencies to fix installation problems


  • add support for Python 3.11

  • add @metadata decorator


  • set test result before tearing down fixtures


  • fix exception handling with incorrectly formatted docstrings in HTML test report

  • fix types in docstrings


  • improve exception handling in generator fixtures


  • add skip reasons to HTML Test Report Overview chart

  • parameters is initialized with an empty dict instead of None if no parameters are supplied

  • data driven testing generators are reset and thus can be run multiple times

  • add start time, duration, etc. to draft reports

  • open reports with absolute filenames to support Microsoft’s browsers Edge and Internet Explorer when using htf.main(..., open_reports=True) or htf --open-report

  • test result is error if htf.SkipStep is raised outside a test step



htf-3 drops support for Python 2.7 and 32 bit software!

This is why:

  • We offered Python 2.7 support for 2 years after Python 2.7’s end of life on 2020-01-01.

  • No recent computer has a 32 bit processor anymore.

  • We will support the newest and commonly used versions of Python 3.x.

  • htf-3 adds support for Behavior Driven Development including tagging and requirements coverage

  • add support for parameters to supply run-time parameters from command-line

  • add support for overwriting settings from command-line to change settings at run-time

  • update look and feel of QABench

  • update and modernize HTML Test Report

  • installation has changed and pip install -i htf only installs the core of htf use pip install -i htf[full] for the behavior of older versions and get more information in the installation instructions and installation options

  • htf is split into multiple wheels (some imports changed)

  • htf -s to minimize report size is now htf -M

  • htf-3 uses oser-3 (needs a few changes - see oser’s changelog)

  • add a configurable timeout to power supplies

  • add support for pip-21



htf-2.0 reached the end of life on January 1st, 2022. Please upgrade to htf-3.0 which can be used with little changes.

  • update look and feel of QABench

  • update and modernize HTML Test Report

  • make tags generated by data driven tests usable

  • fix htf.skip_if when using callable conditions defined in classes


  • use hlm-2.0.1


  • Modbus TCP transaction identifier can overflow now

  • add an exception if Modbus TCP receives an unexpected response

  • convert all test run metadata’s values to strings



  • force installation of docutils==0.16



  • fix HTML report loading for empty mimetypes in attachments and empty metadata


  • use docutils==0.16


  • fix evaluation crash when exceptions contained private use unicode characters

  • fix error sometimes thrown in htf.fixtures.delay fixture


  • use hlm-2.0


  • fix usage of tags in combination with fixture tags

  • fix fixture cleanup

  • improve interaction user interface and fix a bug that caused it to freeze


  • reduce HTML report size

  • improve stability and user experience of interaction user interface

  • improve stability of test discovery

  • fix disappearing steps in HTML report

  • fix tags inheritance when using classes

  • fix Modbus client’s query method thread-safeness

  • fix message in htf.assertions.assert_list_equal

  • fix rarely occurring escaping error in JUnit XML report

  • update to pyserial==3.5


  • use Dashboard report server url as is to support Dashboard-1.0

  • add -o option to report-tool to open generated HTML reports

  • fix date in HTML Test Report

  • improve format of JUnit-XML-Testreport

  • fix report merge errors with report-tool

  • add support for Python 3.9

  • update dependencies


  • fix docstring rendering in HTML Test Report’s print view



  • fix shuffle


  • add @requirements decorator

  • fix total test run time in output to correct display days

  • update interfacing with the Dashboard


  • fix crash in Report Tool when converting from XML source



htf-2 is not fully backwards compatible to htf-1!

  • PEP 8: all names are PEP-8-ified but have aliases for backwards compatibility. Some parameter names changed and you will have to change them yourself.

  • Verbosity: The verbosity parameter and --verbosity have been removed.

  • Catchbreak: The catchbreak parameter and --catchbreak have been removed. catchbreak is enabled by default.

  • TestCase: _runThreadsEnable was removed. Use the threads-fixture.



htf-1.3 reached the end of life on August 15th, 2021. Please upgrade to htf-2.0 which can be used with little changes.

  • use docutils==0.16


  • remove docs from wheels


  • use hlm-2.0

  • fix Modbus client’s query method thread-safeness


  • add support for Python 3.9

  • fix tags inheritance when using classes

  • fix Modbus client’s query method thread-safeness

  • fix rarely occurring escaping error in JUnit XML report

  • update to pyserial==3.5


  • use Dashboard report server url as is to support Dashboard-1.0


  • fix HTTP status code for new Dashboard API


  • fix htf console entry point to enable networking in Linux


  • fix payload length calculation for HART command 3 and 61

  • fix object clean up order in HartInterface and HartApplicationLayer

  • fix potential element ordering problem in CSVFileIterator


  • build manylinux2014 wheels for Python 3.x and manylinux2010 wheels for Python 2.7


  • Serial Modbus clients and servers now accept additional serial parameters


  • OserPrompt now allows NaN for float values


  • fix hlm usage


  • Warning

    Due to some bugfixes in hlm the host id might change. We’re sorry. Please renew your license.

  • add support for Python 3.8 (htf is shipped for Python 2.7, 3.6, 3.7 and 3.8 for Windows and Linux for 32 and 64 bit machines)

  • update to hlm-1.1

  • update to oser~=1.3.3

  • fix HART Time encoding and decoding

  • add HART response code error_command_not_implemented

  • improve HART on Linux

  • fix Modbus client debug

  • add interactive mode for htf in Docker (see Interactive Mode)

  • fix report server report and report upload

  • improve docs for skip_test and skip_step


  • update to hlm-1.0.4

  • update to oser-1.3.1