[Twisted-Python] Thoughts about testing
glyph at divmod.com
glyph at divmod.com
Wed Oct 26 17:59:59 EDT 2005
On Wed, 26 Oct 2005 19:48:32 +0200, Moof <moof at metamoof.net> wrote:
>Glyph Lefkowitz wrote:
>I do despise the unittest (and hence trial) camelcaseness. I don't know
>enough low level python to be able to answer whether a test() function would
>have the same drawback as assert, if -O testing is really an issue.
Nope. A test() function could do all the same stack introspection and everything as assert, but would not create problems with -O. So it's a stealable idea.
>>>3. Tests execute in predictable order.
>There is a use case for this, though. py.test has a -x option that will stop
>executing after one test returns an error. This is very much a time saver
>when you're running a bunch of lengthy tests on a function where one initial
>test failing may inevitably mean that a bunch of more sophisticated tests
>involving the same item will fail.
The correct way to deal with this is to print errors immediately when they happen, like trial -e, or to run just the test that you want, like twisted-dev.el does. If your unit test spits out the error right away, you can fix it while the rest of the tests are running, then kill and restart them immediately, for maximum user/computer parallelism.
>One thing that I did like out of py.test was the ability to name a test or
>test object that you wanted to run and it would do magic pattern matching on
>the test's __name__ based on what you typed in. It still printed out
>non-matching tests as skipped, but it only ran what you wanted. It allows
>you to, again, focus on small functionality within a larger test file.
Hmm, wildcards might be handy, but in practice I've never wanted more than trial's hierarchical naming. One thing I wish trial had was a reporter mode that looked like 'make' output, eg:
% trial --gcc -e foo
trial --gcc -e foo.test
trial --gcc -e foo.test.test_whatever
trial --gcc -e foo.test.test_whatever.TestWhatever.test1
trial --gcc -e foo.test.test_whatever.TestWhatever.test2
trial --gcc -e foo.test.test_whatever.TestWhatever.test3
so I could easily jump to a failed test, then copy the exact trial line needed to run it, so that I could paste that into my buffer's test line, or run trial manually on the command line to 'zoom in' to the test or suite I want.
I bet mumak has cleaned up the reporter API so this is now sane to do, I should have a look.
>Serving up my ego over at <http://metamoof.net/>
BTW, this site seems to be down.
More information about the Twisted-Python