[TIP] Generating tests dynamically (was Re: Meta-test methods...)

Augie Fackler lists at durin42.com
Sat Apr 25 16:09:10 PDT 2009


(Robert/Titus, sorry about the double-send)
On Apr 24, 2009, at 1:23 PM, C. Titus Brown wrote:

> -> At least in unittest, you can do this just by generating whatever  
> tests
> -> you want in TestSuite.__iter__.
> ->
> -> countTestCases clearly can't do a lot there, but that is the only  
> method
> -> in the protocol that conflicts with generation.
>
> This may seem tangential but IMO is not: could someone document the
> !%#!$!# out of unittest, please?
>
> Reading through this
>
> 	http://docs.python.org/library/unittest.html
>
> doesn't give me any clue as to how to extend TestSuite to do this;  
> sure,
> I can read (and modify) the source code, but basing a test suite for
> multiple versions of Python on unittest internals stirkes me as a tad
> risky.

I ended up doing dynamic test generation for hgsubversion, and the  
resulting source file is here:
https://bitbucket.org/durin42/hgsubversion/src/tip/tests/test_rebuildmeta.py

Summary: build up the __dict__ of the test case class by hand, then  
call type() explicitly when you're done. Ugly, but works in both Nose  
and unittest, which was my initial goal.

> With nose, I'm fairly sure that once given an API for generating tests
> in my test suite, that API will continue to work.  That's partly  
> because
> I know (roughly) where Jason Pellerin lives, and partly because the  
> API
> is rather minimal and it can be implemented in multiple ways.  With
> unittest, I don't have a good sense for what guarantees there are,  
> other
> than that what is specified in the docs.  I consider everything else  
> to
> be internal & subject to change and resulting backwards  
> incompatibility.
>
> cheers,
> --titus
> -- 
> C. Titus Brown, ctb at msu.edu
>
> _______________________________________________
> testing-in-python mailing list
> testing-in-python at lists.idyll.org
> http://lists.idyll.org/listinfo/testing-in-python




More information about the testing-in-python mailing list