Skip to main content

Reads your Python code to generate unit test stubs

Project description

PyTestStub

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.

Installation

To install, simply use pip:

> python3 -m pip install PyTestStub

Scripts

GenerateUnitTests.py

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

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

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
                        exist.
  -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/__init__.py
Writing test to test/test_Generator.py
No classes or functions in PyTestStub/Templates.py

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

	@classmethod
	def setUpClass(cls):
		pass #TODO

	@classmethod
	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.

Source Distribution

PyTestStub-0.0.4.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

PyTestStub-0.0.4-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file PyTestStub-0.0.4.tar.gz.

File metadata

  • Download URL: PyTestStub-0.0.4.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.5.3

File hashes

Hashes for PyTestStub-0.0.4.tar.gz
Algorithm Hash digest
SHA256 d2ceffd2a3fb93980b1d372f92d90fa631bce8e59d054bd1bee47eb31edc3122
MD5 714bdca6db032b0752f7740f302fc8b2
BLAKE2b-256 0e4ec9d37b5001ffa8c0a5a96bce527c7729ee61f3f8aada4cc959f50719c1b8

See more details on using hashes here.

File details

Details for the file PyTestStub-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: PyTestStub-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.5.3

File hashes

Hashes for PyTestStub-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f52f357d64a6b30cca7f275426b759135354b2f893662d92260138f6dd0746a1
MD5 91c5d916fa4da64bbe44706fdbf4219c
BLAKE2b-256 7bc02bd2753bff2c9567ec72ceb12b0a62207d831f25902c1618035413301ff3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page