pynguin


Namepynguin JSON
Version 0.36.0 PyPI version JSON
download
home_pagehttps://www.pynguin.eu
SummaryPynguin is a tool for automated unit test generation for Python
upload_time2024-04-02 12:42:55
maintainerNone
docs_urlNone
authorStephan Lukasczyk
requires_python<3.11,>=3.10
licenseMIT
keywords unit test random testing search based test generation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!--
SPDX-FileCopyrightText: 2019–2024 Pynguin Contributors

SPDX-License-Identifier: CC-BY-4.0
-->

# 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.

<details>
<summary>Internal Pipeline Status</summary>

[![pipeline status](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/badges/main/pipeline.svg)](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/-/commits/main)
[![coverage report](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/badges/main/coverage.svg)](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/-/commits/main)  

</details>

[![License MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![PyPI version](https://badge.fury.io/py/pynguin.svg)](https://badge.fury.io/py/pynguin)
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/pynguin.svg)](https://github.com/se2p/pynguin)
[![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/en/latest/?badge=latest)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3989840.svg)](https://doi.org/10.5281/zenodo.3989840)
[![REUSE status](https://api.reuse.software/badge/github.com/se2p/pynguin)](https://api.reuse.software/info/github.com/se2p/pynguin)
[![Downloads](https://static.pepy.tech/personalized-badge/pynguin?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pynguin)
[![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/se2p/pynguin/)](https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/se2p/pynguin)


![Pynguin Logo](https://raw.githubusercontent.com/se2p/pynguin/master/docs/source/_static/pynguin-logo.png "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 (we have not yet tested with Python
  3.11, there might be some problems due to changed internals regarding the byte-code
  instrumentation).

  **Attention:** Pynguin now requires Python 3.10!  Older versions are no longer 
  supported!
- You have a recent Linux/macOS/Windows machine.

Please consider reading the [online documentation](https://pynguin.readthedocs.io)
to start your Pynguin adventure.
 
## Installing Pynguin

Pynguin can be easily installed using the `pip` tool by typing:
```bash
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](https://pynguin.readthedocs.io/en/latest/user/quickstart.html)

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):
```bash
pynguin \
  --project-path /tmp/foo \
  --output-path /tmp/testgen \
  --module-name foo.bar
```
Please find a more detailed example in the [quick start guide](https://pynguin.readthedocs.io/en/latest/user/quickstart.html).


## Contributing to Pynguin

For the development of Pynguin you will need the [`poetry`](https://python-poetry.org)
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](https://python-poetry.org/docs/) for more information on this tool.

## Contributors

Pynguin is developed at the
[Chair of Software Engineering II](https://www.fim.uni-passau.de/lehrstuhl-fuer-software-engineering-ii/) 
of the [University of Passau](https://www.uni-passau.de).

Maintainer: [Stephan Lukasczyk](https://github.com/stephanlukasczyk)

Contributors:
- [Juan Altmayer Pizzorno](https://github.com/jaltmayerpizzorno)
- [Lucas Berg](https://github.com/BergLucas)
- [Tucker Blue](https://github.com/tuckcodes)
- [Gordon Fraser](https://github.com/gofraser)
- [Abdur-Rahmaan Janhangeer](https://github.com/Abdur-rahmaanJ)
- [Maximilian Königseder](https://github.com/mak1ng)
- [Florian Kroiß](https://github.com/Wooza)
- [Simon Labrenz](https://github.com/labrenz)
- [Roman Levin](https://github.com/romanlevin)
- [Juan Julián Merelo Guervós](https://github.com/JJ)
- [Lukas Steffens](https://github.com/Luki42)
- [Florian Straubinger](https://github.com/f-str)
- [Sara Tavares](https://github.com/stavares843)


### 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 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](LICENSE.rst).
Pynguin was using the GNU Lesser General Public License (LGPL) until version 0.29.0,
its licence was changed with version 0.30.0.

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=se2p/pynguin&type=Date)](https://star-history.com/#se2p/pynguin)

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.pynguin.eu",
    "name": "pynguin",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.11,>=3.10",
    "maintainer_email": null,
    "keywords": "unit test, random testing, search based, test generation",
    "author": "Stephan Lukasczyk",
    "author_email": "stephan@pynguin.eu",
    "download_url": "https://files.pythonhosted.org/packages/35/4e/c77adb298667f15ae5f4048ed7a931f3f0034f7d44546a4babd1ec8ce103/pynguin-0.36.0.tar.gz",
    "platform": null,
    "description": "<!--\nSPDX-FileCopyrightText: 2019\u20132024 Pynguin Contributors\n\nSPDX-License-Identifier: CC-BY-4.0\n-->\n\n# Pynguin\n\nPynguin (IPA: \u02c8p\u026a\u014b\u0261ui\u02d0n),\nthe\nPYthoN\nGeneral\nUnIt\ntest\ngeNerator,\nis a tool that allows developers to generate unit tests automatically.\n\nTesting software is often considered to be a tedious task.\nThus, automated generation techniques have been proposed and mature tools exist\u2014for\nstatically typed languages, such as Java.\nThere is, however, no fully-automated tool available that produces unit tests for\ngeneral-purpose programs in a dynamically typed language.\nPynguin is, to the best of our knowledge, the first tool that fills this gap\nand allows the automated generation of unit tests for Python programs.\n\n<details>\n<summary>Internal Pipeline Status</summary>\n\n[![pipeline status](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/badges/main/pipeline.svg)](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/-/commits/main)\n[![coverage report](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/badges/main/coverage.svg)](https://gitlab.infosun.fim.uni-passau.de/se2/pynguin/pynguin/-/commits/main)  \n\n</details>\n\n[![License MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![PyPI version](https://badge.fury.io/py/pynguin.svg)](https://badge.fury.io/py/pynguin)\n[![Supported Python Versions](https://img.shields.io/pypi/pyversions/pynguin.svg)](https://github.com/se2p/pynguin)\n[![Documentation Status](https://readthedocs.org/projects/pynguin/badge/?version=latest)](https://pynguin.readthedocs.io/en/latest/?badge=latest)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3989840.svg)](https://doi.org/10.5281/zenodo.3989840)\n[![REUSE status](https://api.reuse.software/badge/github.com/se2p/pynguin)](https://api.reuse.software/info/github.com/se2p/pynguin)\n[![Downloads](https://static.pepy.tech/personalized-badge/pynguin?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/pynguin)\n[![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/se2p/pynguin/)](https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/se2p/pynguin)\n\n\n![Pynguin Logo](https://raw.githubusercontent.com/se2p/pynguin/master/docs/source/_static/pynguin-logo.png \"Pynguin Logo\")\n\n## Attention\n\n*Please Note:*\n\n**Pynguin executes the module under test!**\nAs a consequence, depending on what code is in that module,\nrunning Pynguin can cause serious harm to your computer,\nfor example, wipe your entire hard disk!\nWe recommend running Pynguin in an isolated environment;\nuse, for example, a Docker container to minimize the risk of damaging\nyour system.\n\n**Pynguin is only a research prototype!**\nIt is not tailored towards production use whatsoever.\nHowever, we would love to see Pynguin in a production-ready stage at some point;\nplease report your experiences in using Pynguin to us.\n\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n- You have installed Python 3.10 (we have not yet tested with Python\n  3.11, there might be some problems due to changed internals regarding the byte-code\n  instrumentation).\n\n  **Attention:** Pynguin now requires Python 3.10!  Older versions are no longer \n  supported!\n- You have a recent Linux/macOS/Windows machine.\n\nPlease consider reading the [online documentation](https://pynguin.readthedocs.io)\nto start your Pynguin adventure.\n \n## Installing Pynguin\n\nPynguin can be easily installed using the `pip` tool by typing:\n```bash\npip install pynguin\n```\n\nMake sure that your version of `pip` is that of a supported Python version, as any \nolder version is not supported by Pynguin!\n\n## Using Pynguin\n\nBefore you continue, please read the [quick start guide](https://pynguin.readthedocs.io/en/latest/user/quickstart.html)\n\nPynguin is a command-line application.\nOnce you installed it to a virtual environment, you can invoke the tool by typing\n`pynguin` inside this virtual environment.\nPynguin will then print a list of its command-line parameters.\n\nA minimal full command line to invoke Pynguin could be the following,\nwhere we assume that a project `foo` is located in `/tmp/foo`,\nwe want to store Pynguin's generated tests in `/tmp/testgen`,\nand we want to generate tests using a whole-suite approach for the module `foo.bar`\n(wrapped for better readability):\n```bash\npynguin \\\n  --project-path /tmp/foo \\\n  --output-path /tmp/testgen \\\n  --module-name foo.bar\n```\nPlease find a more detailed example in the [quick start guide](https://pynguin.readthedocs.io/en/latest/user/quickstart.html).\n\n\n## Contributing to Pynguin\n\nFor the development of Pynguin you will need the [`poetry`](https://python-poetry.org)\ndependency management and packaging tool.\nTo start developing, follow these steps:\n1. Clone the repository\n2. Change to the `pynguin` folder: `cd pynguin`\n3. Create a virtual environment and install dependencies using `poetry`: `poetry install`\n4. Make your changes\n5. Run `make check` to verify that your changes pass all checks\n\n   Please see the [`poetry` documentation](https://python-poetry.org/docs/) for more information on this tool.\n\n## Contributors\n\nPynguin is developed at the\n[Chair of Software Engineering II](https://www.fim.uni-passau.de/lehrstuhl-fuer-software-engineering-ii/) \nof the [University of Passau](https://www.uni-passau.de).\n\nMaintainer: [Stephan Lukasczyk](https://github.com/stephanlukasczyk)\n\nContributors:\n- [Juan Altmayer Pizzorno](https://github.com/jaltmayerpizzorno)\n- [Lucas Berg](https://github.com/BergLucas)\n- [Tucker Blue](https://github.com/tuckcodes)\n- [Gordon Fraser](https://github.com/gofraser)\n- [Abdur-Rahmaan Janhangeer](https://github.com/Abdur-rahmaanJ)\n- [Maximilian K\u00f6nigseder](https://github.com/mak1ng)\n- [Florian Kroi\u00df](https://github.com/Wooza)\n- [Simon Labrenz](https://github.com/labrenz)\n- [Roman Levin](https://github.com/romanlevin)\n- [Juan Juli\u00e1n Merelo Guerv\u00f3s](https://github.com/JJ)\n- [Lukas Steffens](https://github.com/Luki42)\n- [Florian Straubinger](https://github.com/f-str)\n- [Sara Tavares](https://github.com/stavares843)\n\n\n### Development using PyCharm.\n\nIf you want to use the PyCharm IDE you have to set up a few things:\n1. Import `pynguin` into PyCharm.\n2. Let PyCharm configure configure a virtual environment using `poetry`.\n3. Set the default test runner to `pytest`\n4. Set the DocString format to `Google`\n\n\n## License\n\nThis project is licensed under the terms of the [MIT License](LICENSE.rst).\nPynguin was using the GNU Lesser General Public License (LGPL) until version 0.29.0,\nits licence was changed with version 0.30.0.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=se2p/pynguin&type=Date)](https://star-history.com/#se2p/pynguin)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Pynguin is a tool for automated unit test generation for Python",
    "version": "0.36.0",
    "project_urls": {
        "Documentation": "https://pynguin.readthedocs.io",
        "Homepage": "https://www.pynguin.eu",
        "Repository": "https://github.com/se2p/pynguin"
    },
    "split_keywords": [
        "unit test",
        " random testing",
        " search based",
        " test generation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "921de6364cd04f3babaf57e45a9bfcfb0bf44841017072842766cc47091a755b",
                "md5": "79210eb4189f76002d63b144c3750269",
                "sha256": "c7f2ea35aabe98089f790590d3fa92e1ce20c74eaf82e1c4f04d90909748d339"
            },
            "downloads": -1,
            "filename": "pynguin-0.36.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "79210eb4189f76002d63b144c3750269",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.11,>=3.10",
            "size": 289916,
            "upload_time": "2024-04-02T12:42:53",
            "upload_time_iso_8601": "2024-04-02T12:42:53.183490Z",
            "url": "https://files.pythonhosted.org/packages/92/1d/e6364cd04f3babaf57e45a9bfcfb0bf44841017072842766cc47091a755b/pynguin-0.36.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "354ec77adb298667f15ae5f4048ed7a931f3f0034f7d44546a4babd1ec8ce103",
                "md5": "c855ca2f36f4192beb1084908b857719",
                "sha256": "2796dd0dfa2c399e588305e3262b248f2f0b523e817e5f7d640d529dc90aad27"
            },
            "downloads": -1,
            "filename": "pynguin-0.36.0.tar.gz",
            "has_sig": false,
            "md5_digest": "c855ca2f36f4192beb1084908b857719",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.11,>=3.10",
            "size": 352909,
            "upload_time": "2024-04-02T12:42:55",
            "upload_time_iso_8601": "2024-04-02T12:42:55.036152Z",
            "url": "https://files.pythonhosted.org/packages/35/4e/c77adb298667f15ae5f4048ed7a931f3f0034f7d44546a4babd1ec8ce103/pynguin-0.36.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-02 12:42:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "se2p",
    "github_project": "pynguin",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pynguin"
}
        
Elapsed time: 0.22612s