Skip to main content

Pynguin is a tool for automated unit test generation for Python

Project description

Pynguin

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.

Internal Pipeline Status

pipeline status coverage report

License MIT Ruff PyPI version Supported Python Versions Documentation Status DOI REUSE status Downloads SWH

Pynguin Logo

Attention

Please Note:

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.

Pynguin is only a research prototype! It is not tailored towards production use whatsoever. However, we would love to see Pynguin in a production-ready stage at some point; please report your experiences in using Pynguin to us.

Prerequisites

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

  • You have installed Python 3.10 (the support for 3.11, 3.12, 3.13, and 3.14 is experimental).

    Attention: Pynguin now requires at least Python 3.10! Older versions are no longer supported!

  • You have a recent Linux/macOS/Windows machine.

Please consider reading the online documentation to start your Pynguin adventure.

Installing Pynguin

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!

Using 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 /tmp/foo, we want to store Pynguin's generated tests in /tmp/testgen, and we want to generate tests using a whole-suite approach for the module foo.bar (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 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 make check to verify that your changes pass all checks

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

Contributors

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

Maintainer: Lukas Krodinger

Former Maintainer: Stephan Lukasczyk

Contributors:

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. Let PyCharm configure a virtual environment using poetry.
  3. Set the default test runner to pytest
  4. Set the DocString format to Google

License

This project is licensed under the terms of the MIT License. Pynguin was using the GNU Lesser General Public License (LGPL) until version 0.29.0, its license was changed with version 0.30.0.

Star History

Star History Chart

Project details


Download files

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

Source Distribution

pynguin-0.46.0.tar.gz (757.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pynguin-0.46.0-py3-none-any.whl (625.8 kB view details)

Uploaded Python 3

File details

Details for the file pynguin-0.46.0.tar.gz.

File metadata

  • Download URL: pynguin-0.46.0.tar.gz
  • Upload date:
  • Size: 757.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pynguin-0.46.0.tar.gz
Algorithm Hash digest
SHA256 a2dc25f65a26a812de763ba739df67ee18aab89f2608b0ffc8b0a44103ca07c0
MD5 999cff61b3de35051d3a03d85e7b17f6
BLAKE2b-256 8ebf9bafaad747d008a571a23e5a7d9701417f01a9cbdec459ab7b92e7e5efe3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynguin-0.46.0.tar.gz:

Publisher: publish.yml on se2p/pynguin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynguin-0.46.0-py3-none-any.whl.

File metadata

  • Download URL: pynguin-0.46.0-py3-none-any.whl
  • Upload date:
  • Size: 625.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pynguin-0.46.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e11710a140b798fb6831ecf6aa00b5a478692663b20d32850af2271c1372ddcf
MD5 a48b074dfb6745a26e0bdce4346c4236
BLAKE2b-256 9b830b0af832469a6cfb7e8ff428d7e5a3e12cf8cb824b9a565faa627226b495

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynguin-0.46.0-py3-none-any.whl:

Publisher: publish.yml on se2p/pynguin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page