Pynguin is a tool for automated unit test generation for Python
Pynguin (IPA: ˈpɪŋɡuiːn), the PYthoN General UnIt test geNerator, is a tool that allows developers to generate unit tests automatically.
Testing software is often considered to be 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 executes the module under test! As a consequence, depending on what code is in that module, running Pynguin can cause serious harm to your computer, for example, wipe your entire hard disk! We recommend running Pynguin in an isolated environment; use, for example, a Docker container to minimize the risk of damaging your system.
Before you begin, ensure you have met the following requirements:
- You have installed Python 3.8, 3.9, or 3.10 (we have not yet tested with Python 3.11, there might be some problems due to changed internals regarding the byte-code instrumentation).
- You have a recent Linux/macOS/Windows machine.
Please consider reading the online documentation to start your Pynguin adventure.
Pynguin can be easily installed using the
pip tool by typing:
pip install pynguin
Make sure that your version of
pip is that of a supported Python version, as any
older version is not supported by Pynguin!
Before you continue, please read the quick start guide
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
we want to store Pynguin's generated tests in
and we want to generate tests using a whole-suite approach for the module
(wrapped for better readability):
pynguin \ --project-path /tmp/foo \ --output-path /tmp/testgen \ --module-name foo.bar
Please find a more detailed example in the quick start guide.
Contributing to Pynguin
For the development of Pynguin you will need the
dependency management and packaging tool.
To start developing, follow these steps:
Clone the repository
Change to the
Create a virtual environment and install dependencies using
Make your changes
poetry shellto switch to the virtual environment in your current shell
make checkto verify that your changes pass all checks
Please see the
poetrydocumentation 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:
Import pynguin into PyCharm.
Let the poetry support configure a virtual environment.
If you use a PyCharm version before
2021.3, you have to install the poetry support as a plugin.
Set the default test runner to
Set the DocString format to
This project is licensed under the terms of the GNU Lesser General Public License.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pynguin-0.16.1.tar.gz (157.0 kB)||File type Source||Python version None||Upload date||Hashes View|
|Filename, size pynguin-0.16.1-py3-none-any.whl (224.7 kB)||File type Wheel||Python version py3||Upload date||Hashes View|