C
callmebill
I'm trying to add a class to a module at runtime. I've seen examples
of adding a method to a class, but I haven't been able to suit it to my
needs.
As part of a testsuite, I have a main process X that searches
recursively for python test files. Those files typically have a global
"isSupported" method, in which the file tells the test searcher "do or
do not run me", as well as the typical TestName_TestCase class, with a
testMyTest method.
For numerous and reasonable reasons, the TestName_TestCase class must
be generated at runtime (i cannot use any pre-processing scripts to
generate the testcase files). So the external runner has to look into
each testcase file, determine if it is supported, expand out the
test-class code, and add that new class to that testcase in memory.
I hope this picture helps:
#-------- atestcase.py --------
def isSupported():
""" do a real check"""
return True
ThisTestName = "foo"
TestCode = \
"""
class %s_TestCase:
def __init__( self ):
""" do some stuff"""
def test_%s( self ):
""" run the test """
"""
#------------------------------------
#------- The external runner --------
(essentially)
import atestcase.py
if atestcase.isSupported():
# Run this test
(here's what i'm trying to figure out)
#--> expand atestcase.TestCode out to include "foo"
#--> make the testcode a class
#--> add the new foo_TestCase class to
# the atestcase module
#-------------------------------------
So: Does anyone know how dynamically generate a class, and add it to a
"module" that is already in memory?
Thanks so much in advance. My flu is heating up my brain pretty badly,
so please ask me if I have to clarify anything above.
of adding a method to a class, but I haven't been able to suit it to my
needs.
As part of a testsuite, I have a main process X that searches
recursively for python test files. Those files typically have a global
"isSupported" method, in which the file tells the test searcher "do or
do not run me", as well as the typical TestName_TestCase class, with a
testMyTest method.
For numerous and reasonable reasons, the TestName_TestCase class must
be generated at runtime (i cannot use any pre-processing scripts to
generate the testcase files). So the external runner has to look into
each testcase file, determine if it is supported, expand out the
test-class code, and add that new class to that testcase in memory.
I hope this picture helps:
#-------- atestcase.py --------
def isSupported():
""" do a real check"""
return True
ThisTestName = "foo"
TestCode = \
"""
class %s_TestCase:
def __init__( self ):
""" do some stuff"""
def test_%s( self ):
""" run the test """
"""
#------------------------------------
#------- The external runner --------
(essentially)
import atestcase.py
if atestcase.isSupported():
# Run this test
(here's what i'm trying to figure out)
#--> expand atestcase.TestCode out to include "foo"
#--> make the testcode a class
#--> add the new foo_TestCase class to
# the atestcase module
#-------------------------------------
So: Does anyone know how dynamically generate a class, and add it to a
"module" that is already in memory?
Thanks so much in advance. My flu is heating up my brain pretty badly,
so please ask me if I have to clarify anything above.