unittest help

Qiangning Hong hongqn at gmail.com
Thu Mar 24 05:45:43 EST 2005


I want to apply TDD (test driven development) on my project.  I am
working on a class like this (in plan):

# file: myclass.py
import _extmod

class MyClass(object):
    def __init__(self):
        self.handle = _extmod.open()

    def __del__(self):
        _extmod.close(self.handle)

    def some_stuff(self):
        _extmod.foobar(self.handle)

    ...

As you see, it is an OO wrapper on _extmod, which is a pyrex extension
module.  The question is: how to unittest this class?  As the _extmod
is hardware-dependent, I want to use a mock class to replace it in unit
test.  But how can I let myclass in unittest to import the mock class?
Like the following:

class MyClassTest(unittest.TestCase):
    def setUp(self):
        import myclass
        import mocklib
        myclass.change_extmod(mocklib.MockExtMod())
        self.testobj = myclass.MyClass()  # here MyClass.__init__ will
call the open
                                          # method of MockExtMod class
instead of
                                          # _extmod.open()
    ...

How to implement the change_extmod?  (Or maybe my idea is totally
wrong?)




More information about the Python-list mailing list