Skip to main content

Convert unittest test-cases to pytest

Project description

Author: Hartmut Goebel <>
Version: 0.4
Copyright: 2015-2019 by Hartmut Goebel
Licence:GNU Public Licence v3 or later (GPLv3+)

unittest2pytest is a tool that helps rewriting Python unittest test-cases into pytest test-cases.

In contrast to other similar tools, this unittest2pytest

  • handles keyword arguments,
  • handles single-line test-cases and several tests on one line,
  • uses context-handlers where appropriate.

This is done by using lib2to3 and Python’s mighty inspect module.


To install unittest2pytest, simply run:

pip install unittest2pytest


To print a diff of changes that unittest2pytest will make against a particular source file or directory:

unittest2pytest source_folder

To have those changes written to the files:

unittest2pytest -w source_folder

To have those changes written to another directory:

unittest2pytest -w source_folder --output-dir /some/where/else

By default, this will create backup files for each file that will be changed. You can add the -n option to not create the backups. Please do not do this if you are not using a version control system.

For more options about running particular fixers, run unittest2pytest --help or read the lib2to3 documentation. This tool is built on top of that one.


A list of the available fixers can be found with the following:

$ unittest2pytest -l
Available transformations for the -f/--fix option:

Note: if your tests use the context managers with self.assertRaises or with self.assertWarns, they will be transformed to pytest.raises or pytest.warns appropriately, but because the semantics are different, any use of the output value from the context managers (e.g. the x in with pytest.raises(ValueError) as x:) will be wrong and will require manual adjustment after the fact.


0.4 (2019-06-30)

  • Add support for assertDictContainsSubset.
  • Put parenthesis around expressions if required.
  • Fixed assertRaisesRegex, assertRaisesRegexp and assertWarnsRegex. The regex was getting replaced with an undefined variable pattern.
  • Fix assertRaisesRegex and assertRaisesRegexp with **kwargs and atom parameters.
  • Made assertRaisesRegex, assertRaisesRegexp and assertWarnsRegex use the match kwarg in pytest.raises instead of creating a variable with the context manager and doing an assert on
  • Add a short developer guide.
  • Remove testing on Python 3.0, 3.1, 3.2, add 3.6 and 3.7.
  • Distribute package as a universal wheel.

v0.3 (2016-07-26)

  • Add support for assertRaises / assertWarns context managers.
  • Add support for converting lambda arguments in assertRaises into context managers.
  • Fix some incorrect transformations.
  • Internal cleanup and fixes.

v0.2 (2015-10-20)

  • Add support for assertRegex/assertRegexpMatches, assertNotRegex, assertRaisesRegex/assertRaisesRegexp, assertWarnsRegex.
  • unittest2pytest is now a pytest subproject.
  • Minor fixes.

v0.1 (2015-10-16)

  • Initial release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for unittest2pytest, version 0.4
Filename, size File type Python version Upload date Hashes
Filename, size unittest2pytest-0.4-py2.py3-none-any.whl (15.8 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size unittest2pytest-0.4.tar.gz (35.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page