[qmtest] Specifying arguments in derived test classes

Mark Mitchell mark at codesourcery.com
Mon Apr 15 15:08:18 UTC 2002



--On Friday, April 12, 2002 05:19:05 PM +0400 Vladimir Prus 
<ghost at cs.msu.su> wrote:

>
> Hi,
> I'm trying to create a test class that would derive from python.ExecTest
> and  change it a little. In particular, I want to get rid of 'expession'
> argument.  I'm trying the following:
>
> class Test(python.ExecTest):
>
>     arguments = [
>         qm.fields.TextField(
>             name="source",
>             title="Python Source Code",
>             description="""The source code.
>
>             This code may contain class definitions, function
>             definitions, statements, and so forth.  If this code
>             throws an uncaught exception, the test will fail.""",
>             verbatim="true",
>             multiline="true",
>             default_value="pass"
>             )
>         ]
>
>     def __init__(self, **properties):
>
>         apply(python.ExecTest.__init__, (self,), properties)
>         self.expression = None
>
>     def Run(self, context, result):
> 	# Not relevant here
>
> However, I get a test class with three arguments: two defined in
> python.ExecTest and one defined in my class. How can I accomplish what I
> want?

There's no easy way to do this.

The plan is to add "computed arguments" which would solve this problem.
For the time being, you have no real choice but to create a whole new
class.

(At one point, it was possible to do approximately what you wanted;
each class could completely override "arguments".  We decided this was
a bad design since that meant that derived classes had to explicitly
list the arguments from the base classes, and there was no guarantee
that the "is-a" relationship would be preserved.)

--
Mark Mitchell                   mark at codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com




More information about the qmtest mailing list