* "Qiangning Hong" <[EMAIL PROTECTED]> wrote: > 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?
You need to design for testability, meaning in this case, that your class could to do something like this: class MyClass(object): def __init__(self): self._loadExtmod() self.handle = self._extmod.open() def __del__(self): self._extmod.close(self.handle) def _loadExtmod(self): import _extmod self._extmod = extmod def some_stuff(self): self._extmod.foobar(self.handle) Now just overload _loadExtmod and provide the mock class there. HTH, nd -- http://mail.python.org/mailman/listinfo/python-list