C. Titus Brown wrote:
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'.


But if you exclude the import and class definition (two lines), then the test methods themselves are identical - except with unittest you have the advantage of the 'assertEquals' error collecting and reporting.

The boilerplate at the end is useful for running the test file in isolation, but you don't include anything comparable in the second example.


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.

What about if you could run all tests in a project (of the first kind) with:

tests = unittest.discover_tests('path/', filter='*test.py')
unittest.run_tests(tests)

(or even just the first line).

With 'discover_tests' recursively globbing the path provided and collecting test files as modules.

Michael



cheers,
--titus


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/
http://www.trypython.org/
http://www.ironpython.info/
http://www.theotherdelia.co.uk/
http://www.resolverhacks.net/

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to