Hey all,

A few folks had an IRC discussion about improving the trial & hypothesis
experience.  I took some notes and thought I'd share them here in case
anyone else is interested.

We're planning to pick up the discussion next Wednesday.  Feel free to join
in #twisted-dev on Freenode (we might set up a Google Hangout, details will
be on IRC if so).

Jean-Paul
* Goals
** Make Twisted / Hypothesis as convenient as Anything Else / Hypothesis.

*** trial doesn't discover "runTest" so Hypothesis stateful tests aren't 
discovery
**** Make trial discover "runTest"
***** This might break things
***** Also TestLoader.getTestCaseNames is incompatible with test methods 
without a test_ prefix (so we need a new interface)

**** Make Hypothesis name its test "test_something"
***** Name could be an argument to a stateful TestCase factory

*** trial TestCases have extra helper methods not availabe to Hypothesis 
stateful tests
**** Make base TestCase class an argument to a stateful TestCase factory

*** setUp / tearDown are called just once even though test body might be called 
many times; and
*** tests that return Deferred are simply incompatible with Hypothesis
**** Hypothesis has an "executor" hook (eg new_style_executor) that might be a 
good place to hang reactor knowledge
**** this could also be a place to hang better setUp / tearDown handling
***** this would be incompatible with current operation which has separate 
setup_example/teardown_example hooks
***** and there's still only a single TestCase instance having methods called 
on it repeatedly which could be surprising
****** `trial -u` does this already though, so maybe less so for trial users
***** but it might be better, anyway

*** Hypothesis does a lot of work within a single test method.
**** A consequence is a ton of log data mixed together from runs with different 
values.
***** It would be nice to be able to see minimal logging from just the most 
shrunk iteration.
**** Maybe there could be a custom HypothesisSuite that knows how repeatedly 
instantiate a TestCase and run it more normally
***** This replaces the loop inside a test_ method with a loop around something 
more like TestCase().run()
****** might solve many problems at once
****** confuses things like `trial -j`
****** causes each test run to have a different number of tests, which is weird
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to