Coverage-driven automatic unit test generator for Python projects.
Project description
Pyster
Pyster is a coverage-driven automatic unit test generator for Python projects.
Pre-request
- Python 3
- Coverage.py (
pip3 install coverage
) - pytest (
pip3 install pytest
)
Usage
# Stage 1: Init pyster config file
python3 -m pyster.init \
--project_path <path-to-project> \
--module_name <module-for-testing> \
--path_runtime <runtime-analysis-code>
# Stage 2: Generate unit tests
python3 -m pyster.gen \
--project_path <path-to-project> \
--module_name <module-for-testing> \
--user_tests <list-of-existing-test-files> \
--timeout <timeout-limit> \
--coverage <coverage-target>
# Run Stage 1 and Stage 2 together:
python3 -m pyster \
--project_path <path-to-project> \
--module_name <module-for-testing> \
--path_runtime <runtime-analysis-code> \
--user_tests <list-of-existing-test-files> \
--timeout <timeout-limit> \
--coverage <coverage-target>
Test
pytest tests
Sample execution
# Phase 1
python3 -m pyster.init --project_path tests/foobar --module_name foobar.foobar
# Phase 2
python3 -m pyster.gen --project_path tests/foobar --module_name foobar.foobar -t 1 -c 80
Pyster Logic
The graph above is a high-level summary of Pyster's workflow.
Pyster contains two phases:
- Phase 1: Type Analysis (
init
stage)- Input:
project_path
: Absolute/relative path to project foldermodule_name
: Name of Python module for generating testspath_runtime
(optional): User-written Python file (e.g. existing test files) that makes use of functions in the selected module.
- Output:
module_name.json
: A configuration file containing all information used to randomly generate function calls. (All function signatures and their argument types, constructor of user-defined classes, etc.) This file can be further modified by user to provide more detailed type-related information.
- Input:
- Phase 2: Test Generation (
gen
stage)- Input:
timeout
: Pyster terminates aftertimeout
seconds.coverage
: Pyster terminates after test cases reachcoverage
code coverage rate.user_tests
(optional): If current module already has test suite,user_tests
can be provided as a list of files so that Pyster will not generate tests covering lines already tested.
- Output:
- A runnable
module_nameTest.py
file containing all automatically generated unit tests as well as command-line output of coverage report.
- A runnable
- Input:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyster-python-0.1.0.tar.gz
(14.5 kB
view hashes)
Built Distribution
Close
Hashes for pyster_python-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3874165b1cc7374f2c10fbdefcb916b77e998577865d4f8770d36bd318177a5 |
|
MD5 | 7c6622d5f64a32b253a29d1f5be6f348 |
|
BLAKE2b-256 | b57eaa9555b361a02b9eb61c4f3695e3f74f32f55f68b22922190fc71685181e |