Skip to main content

Reads your Python code to generate unit test stubs

Project description


PyTestStub reads your Python code to generate unit test stubs. Given a module name, it walks each file in the module. If it encounters a file without a corresponding test file, it generates one with test stubs for each function and class method in the file.

Besides reducing time spent on boilerplate, this approach ensures complete coverage when creating new tests, so developers can focus on the actual tests. After generation, rework is limited to removing unneeded stubs and duplicating those which require multiple tests (copy+paste). The resulting skeleton is sufficiently complete to delegate the test implementation to another developer.


To install, simply use pip:

> python3 -m pip install PyTestStub


Generates the actual unit tests, with options like a header file to prepend as a license:

> python3 -m PyTestStub.GenerateUnitTests -h
usage: [-h] [-F FOOTER] [-H HEADER] [-X EXCLUDE] [-f]
                            [-i] [-m TEST_MODULE] [-p TEST_PREFIX]
                            [-t TAB_WIDTH]

Python Unit Test Stub Generator

positional arguments:
  module                The path of the module to test.

optional arguments:
  -h, --help            show this help message and exit
  -F FOOTER, --footer FOOTER
                        File to use as a footer.
  -H HEADER, --header HEADER
                        File to use as a header.
  -X EXCLUDE, --exclude EXCLUDE
                        Add a child directory name to exclude.
  -f, --force           Force files to be generated, even if they already
  -i, --internal        Include internal classes and methods starting with a
  -m TEST_MODULE, --test-module TEST_MODULE
                        The path of the test module to generate.
  -p TEST_PREFIX, --test-prefix TEST_PREFIX
                        The prefix for test files.
  -t TAB_WIDTH, --tab-width TAB_WIDTH
                        The width of a tab in spaces (default actual tabs).

Output is simple and human readable:

> python3 -m PyTestStub.GenerateUnitTests PyTestStub
No classes or functions in PyTestStub/
Writing test to test/
No classes or functions in PyTestStub/

Output files have stubs for everything but are easily pruned if e.g. setup methods are not needed:

import unittest

class GeneratorTest(unittest.TestCase):
	Tests for functions in the Generator module.

	def setUpClass(cls):
		pass #TODO

	def tearDownClass(cls):
		pass #TODO

	def setUp(self):
		pass #TODO

	def tearDown(self):
		pass #TODO

	def test_generateUnitTest(self):
		raise NotImplementedError() #TODO: test generateUnitTest

Project details

Download files

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

Files for PyTestStub, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size PyTestStub-0.0.4.tar.gz (5.2 kB) File type Source Python version None Upload date Hashes View
Filename, size PyTestStub-0.0.4-py3-none-any.whl (8.9 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page