Greetings: Andreas and Kent helped me solve my problem. We are writing a keyword driven framework for embedded SW testing. The framework supports scores of keywords, built-in and user-defined. We are still writing the framework, so none of the functions for manipulating the target device has been written, although the keywords are defined. As a result, he framework's output log is full of "keyword not found" errors, which mask real errors in framework operation.
To get rid of these 'pseudo errors' I wanted a stub handler that would output an information message, with the name of the function and its arguments. Using the sys._getframe method and the inspect.getargvalues methods, I was able to write a single routine that will handle any function signature. Here is the result: A sample keyword triggered function: ########## import sys from actioncommon import handlestub def doaction_dbopen(ctrl, proc, schemafile, configfile, dataset="default"): '''A, Config, DB, Open, schemafile, configfile, dataset="default" Open the testbench data base. Where: schemafile (str) - the xml schema file for the product to be tested; configfile (str) - the configuration file for the product to be tested; dataset (str) - optional configuration data set to activate. defaults to "default" Example: A, Config, DB, Open, "master.xml", "test.tex", "current" ''' # TODO: replace stub handler with action logic. handlestub(ctrl, proc, sys._getframe()) return True ########## The stub handler: ########## from inspect import getargvalues def handlestub(ctrl, proc, thestubframe): """Identifies actions that are defined but not yet implemented.""" themsg = "Execuiting %s (implementation pending) with arguments: " % \ thestubframe.f_code.co_name (theargnames, trash1, trash2, thelocalsdict)=getargvalues(thestubframe) # The first two arguments are internal to the application: do not display. if len(theargnames) <= 2: themsg += "None" else: for theargname in theargnames[2:]: themsg += "%s=%s " % (theargname, thelocalsdict[theargname]) ctrl.log.logaction(ctrl.log.INFO, themsg) ########## The resulting log output: ########## INFO Execuiting doaction_dbopen (implementation pending) with arguments: schemafile=USBIBM.XML configfile=USBIBM.TEX dataset=usbimbstart ########## Thanks to Andreas and Kent for their help Regards, Barry [EMAIL PROTECTED] 541-302-1107 ________________________ We who cut mere stones must always be envisioning cathedrals. -Quarry worker's creed > -----Original Message----- > From: Kent Johnson [mailto:[EMAIL PROTECTED] > Sent: Wednesday, December 13, 2006 2:55 AM > To: Carroll, Barry > Cc: tutor@python.org > Subject: Re: [Tutor] Accessing the name of a Function > > Carroll, Barry wrote: > > Andreas: > > > > You're right, that is kind of messy and somewhat limited. In the > > present case, however, it is the function's defined name that I want, so > > this would work okay. > > > > I'm guessing that there is a way to determine the number and names of > > the arguments to the function as well. I'll go look at the sys module > > and see what I can find. > > Look at the inspect module, specifically getargspec() and getargvalues(). > > Kent > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor