-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Olemis Lang wrote:
> On Tue, Feb 9, 2010 at 8:10 PM, Ben Finney <ben+pyt...@benfinney.id.au> wrote:
>> Michael Foord <fuzzy...@voidspace.org.uk> writes:
>>
>>> I've used unittest for long running functional and integration tests
>>> (in both desktop and web applications). The infrastructure it provides
>>> is great for this. Don't get hung up on the fact that it is called
>>> unittest. In fact for many users the biggest reason it isn't suitable
>>> for tests like these is the lack of shared fixture support - which is
>>> why the other Python test frameworks provide them and we are going to
>>> bring it into unittest.
>> I would argue that one of the things that makes ‘unittest’ good is that
>> it makes it difficult to do the wrong thing — or at least *this* wrong
>> thing. Fixtures persist for the lifetime of a single test case, and no
>> more; that's the way unit tests should work.
>>
>> Making the distinction clearer by using a different API (and *not*
>> extending the ‘unittest’ API) seems to be the right way to go.
>>
> 
> If that means that development should be focused on including
> mechanisms to make unittest more extensible instead of complicating
> the current «relatively simple» API , then I agree . I think about
> unittest as a framework for writing test cases; but OTOH as a
> meta-framework to be used as the basic building blocks to build or
> integrate third-party testing infrastructures (and that includes
> third-party packages ;o)

Just as a point of reference:  zope.testing[1] has a "layer" feature
which is used to support this usecase:  a layer is a class namedd as an
attribute of a testcase, e.g.:

  class FunctionalLayer:
     @classmethod
     def setUp(klass):
         """ Do some expesnive shared setup.
         """
     @classmethod
     def tearDown(klass):
         """ Undo the expensive setup.
         """

  class MyTest(unittest.TestCase):
      layer = FunctionalLayer

The zope.testing testrunner groups testcase classes together by layer:
each layer's setUp is called, then the testcases for that layer are run,
then the layer's tearDown is called.

Other features:

- - Layer classes can define per-testcase-method 'testSetUp' and
 'testTearDown' methods.

- - Layers can be composed via inheritance, and don't need to call base
  layers' methods directly:  the testrunner does that for them.

These features has been in heavy use for about 3 1/2 years with a lot of
success.


[1] http://pypi.python.org/pypi/zope.testing/

Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tsea...@palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkt0LeYACgkQ+gerLs4ltQ57WgCdFTzc1OHocXj/WTLShP62Q1bx
vSAAnAqE/9+o1tZAaSLzlXfxaoRGTiuf
=O/b2
-----END PGP SIGNATURE-----

_______________________________________________
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