[Python-Dev] Unittest PEP do's and don'ts (BDFL pronouncement)
C. Titus Brown
ctb at msu.edu
Wed Jul 16 23:20:07 CEST 2008
On Wed, Jul 16, 2008 at 02:15:29PM -0700, C. Titus Brown wrote:
-> At this point I might suggest taking a look at the nose and py.test
-> discovery rules and writing a simple test discovery system to find &
-> wrap 'test_' functions/classes and doctests in a unittest wrapper.
->
-> Many people use nose and py.test (which use remarkably similar test
-> discovery procedures, note) and the basic algorithm is pretty well
-> worked out. And, since nose wraps such tests in unittests anyway, it
-> can be made entirely compatible with pre-existing TestRunner
-> derivatives.
Sorry for the second message, but... let's compare:
test_sort.py:
#! /usr/bin/env python
import unittest
class Test(unittest.TestCase):
def test_me(self):
seq = [ 5, 4, 1, 3, 2 ]
seq.sort()
self.assertEqual(seq, [1, 2, 3, 4, 5])
if __name__ == '__main__':
unittest.main()
with
test_sort2.py :
def test_me():
seq = [ 5, 4, 1, 3 2 ]
seq.sort()
assert seq == [1, 2, 3, 4, 5]
The *only value* that unittest adds here is in the 'assertEqual'
statement, which (I think) returns a richer error message than 'assert'.
If I could run the second program by doing
unittest.discover_tests('test_sort2.py')
I would be a very happy man... right now it requires installing nose or
py.test.
cheers,
--titus
--
C. Titus Brown, ctb at msu.edu
More information about the Python-Dev
mailing list