Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Pynguin is a tool for automated unit test generation for Python

Project description


Pynguin, the PYthoN General UnIt test geNerator, is a tool that allows developers to generate unit tests automatically.

Testing software is a tedious task. Thus, automated generation techniques have been proposed and mature tools exist—for statically typed languages, such as Java. There is, however, no fully-automated tool available that produces unit tests for general-purpose programs in a dynamically typed language. Pynguin is, to the best of our knowledge, the first tool that fills this gap and allows the automated generation of unit tests for Python programs.

Pynguin is developed at the Chair of Software Engineering II of the University of Passau.

License LGPL v3 Code style: black PyPI version Supported Python Versions Documentation Status DOI

Pynguin Logo


Before you begin, ensure you have met the following requirements:

  • You have installed Python 3.8 (we have not yet tested with Python 3.9, there might be some problems due to changed internals regarding the byte-code instrumentation).
  • You have a recent Linux/macOS/Windows machine.

Installing Pynguin

Pynguin can be easily installed using the pip tool by typing:

pip install pynguin

Make sure that your version of pip is the one of the Python 3.8 interpreted or a virtual environment that uses Python 3.8 as its interpreter as any older version is not supported by Pynguin!

Using Pynguin

Pynguin is a command-line application. Once you installed it to a virtual environment, you can invoke the tool by typing pynguin inside this virtual environment. Pynguin will then print a list of its command-line parameters.

A minimal full command line to invoke Pynguin could be the following, where we assume that a project foo is located in /tmp/foo, we want to store Pynguin's in /tmp/testgen, and we want to generate tests using a whole-suite approach for the module (wrapped for better readability):

pynguin \
  --algorithm WSPY \
  --project_path /tmp/foo \
  --output_path /tmp/testgen \

Contributing to Pynguin

For the development of Pynguin you will need the poetry dependency management and packaging tool. To start developing, follow these steps:

  1. Clone the repository

  2. Change to the pynguin folder: cd pynguin

  3. Create a virtual environment and install dependencies using poetry: poetry install

  4. Make your changes

  5. Run poetry shell to switch to the virtual environment in your current shell

  6. Run make check to verify that your changes pass all checks

    Please see the poetry documentation for more information on this tool.

Development using PyCharm.

If you want to use the PyCharm IDE you have to set up a few things:

  1. Import pynguin into PyCharm.
  2. Find the location of the virtual environment by running poetry env info in the project directory.
  3. Go to Settings / Project: pynguin / Project interpreter
  4. Add and use a new interpreter that points to the path of the virtual environment
  5. Set the default test runner to pytest


This project is licensed under the terms of the GNU Lesser General Public License.

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 pynguin, version 0.5.3
Filename, size File type Python version Upload date Hashes
Filename, size pynguin-0.5.3.tar.gz (88.7 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