• Stars
    star
    1,188
  • Rank 39,371 (Top 0.8 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The PYthoN General UnIt Test geNerator is a test-generation tool for Python

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 Code style: black PyPI version Supported Python Versions Documentation Status DOI REUSE status Downloads

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 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: 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 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 licence was changed with version 0.30.0.

Star History

Star History Chart

More Repositories

1

LitterBox

Static code analysis tool for detecting recurring patterns in Scratch projects.
Java
22
star
2

tool-competition-av

The repository hosts the code for the SBST CPS Tool competition for testing autonomous cars.
Python
20
star
3

whisker

A Testing Utility for Scratch 3.0
TypeScript
19
star
4

FlaPy

A Tool for Mining Flaky Tests at Scale
Python
15
star
5

se2thesis

A Thesis Class for the Chair of Software Engineering II at the University of Passau, Germany
TeX
7
star
6

Bastet

BASTET program analysis and verification framework
TypeScript
5
star
7

ps-wise-2021-exercises

Public Repo for Programming Styles WiSe 20-21
Python
4
star
8

sbst-2021-tutorial

Python
4
star
9

artifact-pynguin-ssbse2020

Python
4
star
10

sa2022

Jupyter Notebook
3
star
11

sbse2020

Jupyter Notebook
3
star
12

crisce-tool

This repository hosts the code of the CRISCE (CRItical SCEnario) tool by Jasim Ahmed and others.
Python
3
star
13

programming-styles-ss-2020-public-tests

This repository hosts the public tests for the assignments of the Programming Style, SS2020
Java
3
star
14

IntelliGame

Kotlin
3
star
15

catnip

Scala
2
star
16

sbse2022

Jupyter Notebook
2
star
17

scratch-anomalies

Anomaly Detection in Scratch
Java
2
star
18

st-examples

Examples for the Software Testing course
Java
2
star
19

pattern-examples

Java
2
star
20

sa2023

Jupyter Notebook
2
star
21

ps-wise-2021-program-description

Public repository hosting the description of the prorgam for the assignments
2
star
22

ScratchLog

Java
2
star
23

st-2020-lecture-examples

Java
1
star
24

ps-2019-assignment-03-public-tests

The repository hosting the definition of the public tests for the third assignment of PS-2019
Shell
1
star
25

refactoring-example

Java
1
star
26

artifact-esecfse2019

Artifact for our paper on "Testing Scratch Programs Automatically"
JavaScript
1
star
27

sbse2021

Jupyter Notebook
1
star
28

whisker-web

A Web GUI for Whisker - A Testing Utility for Scratch 3.0
JavaScript
1
star
29

se2023

Jupyter Notebooks mit Beispielcode zur Software Engineering Vorlesung
Jupyter Notebook
1
star
30

st-graphwalker

An example project combining GraphWalker and Selenium to run automized tests for web sites.
Java
1
star
31

NuzzleBug

A debugger for Scratch
JavaScript
1
star
32

artifact-scam2021

Jupyter Notebook
1
star
33

ps-2019-assignment-02-public-tests

The repository hosting the definition of the public tests for the second assignment of PS-2019
Shell
1
star
34

sbse2023

Jupyter notebooks accompanying the Search-Based Software Engineering Course WS23/24
Jupyter Notebook
1
star
35

programming-styles-ss-2020-program-description

This repository hosts the description of the program that students must implement for the assignments of the Programming Style, SS2020
1
star
36

static-line-counter

A small example task for the Software Testing class introducing the usage of ASM by counting lines per method statically
Java
1
star