[Chandler-dev] Script-recording/playback as test framework

Grant Baillie grant at osafoundation.org
Tue Dec 26 17:49:37 PST 2006


On 26 Dec, 2006, at 17:36, Mikeal Rogers wrote:

>> Personally, I'd vote against both asserts (which don't fire if  
>> you're running optimized, as we'd want for the performance tests)  
>> and the previous pass/fail approach (which is baroque and error- 
>> prone). Instead, why not have tests inherit from  
>> unittest.TestCase, since:
>
> I'm not against integrating with unittest, but I'm hesitant to use  
> unittest _every_ time we run a script. One thing I forgot to  
> mention was that we plan on adding a submenu in test, that has a  
> list of all the standard tests we have written, that can be run at  
> any time. A big difference with the new test approach is that we're  
> using one feature, script recording/playback, for a few different  
> facilities. If someone records a script and plays it back, they  
> don't necessarily want to run a "test", they could just be  
> automating some piece of their workflow.
>
>> 1) That has a pretty expressive API for validating state  
>> (TestCase.failUnless, TestCase.failUnlessEqual, etc)
>> 2) Tests that depend on setting up shared data can use  
>> inheritance, usually in conjunction with setUp() methods.
>
> With the way we have things now we're trying to keep people from  
> needing to write code to get a test going. In this case how do we  
> even handle tests that use shared data? This may be a feature we  
> want to build for continuous integration (tinderbox) that's outside  
> of the regular script recording/playback.
>
>> 3) Less wheel reinvention, less having developers have to learn  
>> new APIs.
>
> So there shouldn't be any api learning for people writing tests,  
> because writing tests shouldn't require any code writing. The  
> script recorder will output a test a file with a "run" method that  
> contains everything needed to run the test.

How are you supposed to verify the data without writing code? And you  
said '"run" method' -- what class is that method defined on? If  
you're spitting out a script anyway, it's just as easy to stick in  
the class definition and "def runTest(self)".

> I think for the continuous integration case (tinderbox) we'll need  
> to run the tests a bit differently that we do when selecting them  
> from a file or menu as the case is now. A good idea would be to  
> write a TestLoader class that pulls all the test methods in from  
> all the files we've saved in script-recording and assigns them as  
> methods in TestCase clases so that we can run the full test suite  
> in unittest.
>
> -Mikeal
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev



More information about the chandler-dev mailing list