Unittest runner producing Test Anything Protocol (TAP) output
Project description
simpletap is a test runner that integrates with the unittest framework to produce TAP (Test Anything Protocol) compatible output.
Usage
In your test scripts, instead of:
if __name__ == "__main__":
unittest.main()
use:
if __name__ == "__main__":
from simpletap import TAPTestRunner
unittest.main(testRunner=TAPTestRunner(buffer=True))
A small test case like:
import unittest
class IntegerArithmeticTestCase(unittest.TestCase):
def testAdd(self): # test method names begin 'test*'
"test adding values"
self.assertEqual((1 + 2), 3)
self.assertEqual(0 + 1, 1)
def testMultiply(self):
"test multiplying values"
self.assertEqual((0 * 10), 0)
self.assertEqual((5 * 8), 40)
def testFail(self):
"a failing test"
self.assertEqual(0, 1)
@unittest.expectedFailure
def testExpectFail(self):
"we saw this coming"
self.assertEqual(0, 1)
@unittest.expectedFailure
def testUnexpectFail(self):
"someone fixed it already"
self.assertEqual(0, 0)
@unittest.skipIf(True, "Skipping this one")
def testSkip(self):
"pending a fix"
self.assertEqual(0, 1)
def testError(self):
"oops something went wrong"
no_such_variable + 1 # Oops!
if __name__ == "__main__":
from simpletap import TAPTestRunner
unittest.main(testRunner=TAPTestRunner(buffer=True))
When saved in a file called test.py and executed would produce:
1..7
ok 1 - test.py: test adding values
not ok 2 - test.py: oops something went wrong
# ERROR: NameError on file test.py line 38 in testError: 'no_such_variable + 1 # Oops!':
# name 'no_such_variable' is not defined
ok 3 - test.py: we saw this coming # TODO
# EXPECTED_FAILURE: AssertionError on file test.py line 24 in testExpectFail: 'self.assertEqual(0, 1)':
# 0 != 1
not ok 4 - test.py: a failing test
# FAIL: AssertionError on file test.py line 19 in testFail: 'self.assertEqual(0, 1)':
# 0 != 1
ok 5 - test.py: test multiplying values
ok 6 - test.py: pending a fix # skip
# SKIP:
# Skipping this one
not ok 7 - test.py: someone fixed it already # FIXED
# UNEXPECTED_SUCCESS:
# testUnexpectFail (__main__.IntegerArithmeticTestCase)
You can also launch simpletap directly from the command line in much the same way you do with unittest:
python -m simpletap test.IntegerArithmeticTestCase
Testing
The test suite is configured to run via tox.
Projects
simpletap is currently being used by:
Changelog
2.0.0
skip keyword is no longer used. Now fully compliant with TAP using ok/not ok
SKIP now results in ok
EXPECTED_FAILURE now results in ok
UNEXPECTED_SUCCESS is now explicitly handled and results in not ok
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
Built Distribution
Hashes for simpletap-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b38fa0564678146db147b772edef0984cf3e960c7032049c3198d4fe886d016b |
|
MD5 | f2ea9420c09ea567db8fc4ca1620a15b |
|
BLAKE2b-256 | 0358ae45c10d17eb462309a958a02ede7dcf03918a52369845b08f37a12eebf6 |