[TIP] fresh fixture on module functions
Grig Gheorghiu
grig at gheorghiu.net
Sun Mar 4 15:47:01 PST 2007
--- Nate Lowrie <solodex2151 at gmail.com> wrote:
> I am currently writing unit tests for the dabo framework. I have run
> into a test smell that I don't quite know how to approach. I have
> several functions defined in a file called dColors. So, it would be:
> -----------------------
> def a():
> do something...
>
> def b():
> do something else...
>
> etc.
> -------------------------
>
> When I am testing I do import dColors at the beginning. All of the
> functions are calculation functions so they could be easily tested.
> However, I noticed that there was a Fragile Test smell due to a
> persistent fixture. I wanted to stub some of the module functions
> out
> so that I can do behavior verification on one function and avoid
> repeated test code.
How about using the technique of overriding the namespace? Let's say
you have another module called mocked_dcolors.py which contains
stubs/mocks for each of the functions in dColors: mocked_a, mocked_b
etc.
Then in test_dcolors you would do:
import dColors
def test_a():
from mocked_dcolors import mocked_b
dColors.b = mocked_b
# test a's behavior while using a mock/stub for b
See also how Michal is doing this in Cheesecake here:
http://agiletesting.blogspot.com/2006/12/mock-testing-examples-and-resources.html
(look at the mocked_urlretrieve section)
Grig
More information about the testing-in-python
mailing list