{"id":13468823,"url":"https://github.com/se2p/pynguin","last_synced_at":"2026-01-29T13:01:44.700Z","repository":{"id":37394478,"uuid":"282944472","full_name":"se2p/pynguin","owner":"se2p","description":"The PYthoN General UnIt Test geNerator is a test-generation tool for Python","archived":false,"fork":false,"pushed_at":"2025-04-02T07:35:28.000Z","size":5883,"stargazers_count":1263,"open_issues_count":17,"forks_count":87,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-04-03T07:05:03.584Z","etag":null,"topics":["python","search-based-software-testing","test-generation","test-generator","testing-tools"],"latest_commit_sha":null,"homepage":"https://www.pynguin.eu","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/se2p.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.rst","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":"docs/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-27T15:50:19.000Z","updated_at":"2025-04-02T07:35:31.000Z","dependencies_parsed_at":"2023-02-17T04:02:43.608Z","dependency_job_id":"9a792f94-54d3-4628-89ea-eee68c0a1d9a","html_url":"https://github.com/se2p/pynguin","commit_stats":{"total_commits":2981,"total_committers":16,"mean_commits":186.3125,"dds":0.587051325058705,"last_synced_commit":"39d67fc572740227602d2434dd72ed627f8afee8"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/se2p%2Fpynguin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/se2p%2Fpynguin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/se2p%2Fpynguin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/se2p%2Fpynguin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/se2p","download_url":"https://codeload.github.com/se2p/pynguin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248208689,"owners_count":21065205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","search-based-software-testing","test-generation","test-generator","testing-tools"],"created_at":"2024-07-31T15:01:19.808Z","updated_at":"2026-01-29T13:01:44.693Z","avatar_url":"https://github.com/se2p.png","language":"Python","readme":"\u003c!--\nSPDX-FileCopyrightText: 2019–2026 Pynguin Contributors\n\nSPDX-License-Identifier: CC-BY-4.0\n--\u003e\n\n# Pynguin\n\nPynguin (IPA: ˈpɪŋɡuiːn),\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—for\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\u003cdetails\u003e\n\u003csummary\u003eInternal Pipeline Status\u003c/summary\u003e\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\u003c/details\u003e\n\n[![License MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\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/)\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\u0026units=international_system\u0026left_color=grey\u0026right_color=blue\u0026left_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 (the support for 3.11, 3.12, 3.13 and 3.14 is experimental).\n\n  **Attention:** Pynguin now requires at least 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/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/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\nMaintainers: [Stephan Lukasczyk](https://github.com/stephanlukasczyk), [Lukas Krodinger](https://github.com/LuKrO2011)\n\nContributors:\n- [Lukas Vögl](https://github.com/lvoegl)\n- [Louis Leppelmann](https://github.com/Tudeldu)\n- [Alexander Wüst](https://github.com/Ravaqor)\n- [Altin Hajdari](https://github.com/AltinHajdari)\n- [Abdelillah Aissani](https://github.com/Abassion)\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önigseder](https://github.com/mak1ng)\n- [Florian Kroiß](https://github.com/Wooza)\n- [Simon Labrenz](https://github.com/labrenz)\n- [Roman Levin](https://github.com/romanlevin)\n- [Juan Julián Merelo Guervós](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\u0026type=Date)](https://star-history.com/#se2p/pynguin)\n","funding_links":[],"categories":["Python","Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fse2p%2Fpynguin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fse2p%2Fpynguin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fse2p%2Fpynguin/lists"}