On Tue, Sep 23, 2008 at 3:07 AM, proteus guy <[EMAIL PROTECTED]> wrote:
>     Here's a fun one for you testing gurus! I have a Django app that uses an
> irc server to communicate events to a system. My models utilize the django
> model save signal to post an irc message when something is updated. For unit
> testing I've been able to monkey-patch the IRC connection object no problem
> and everything's dandy. However, most of the tests require fixture objects
> so a certain state is established prior to each test. Since fixtures get
> loaded prior to my unit test code getting loaded the monkey-patching hasn't
> occurred yet and the save signal for the fixture model objects is causing
> the system to attempt to talk to a real irc server. According to the Django
> documentation I can use settings.TEST_RUNNER to get control of the
> fixture/test discovery/execution but this only works for manage.py and is
> ignored by nosetests (and its Django plugin).
>
>     Appreciate any ideas...

As Russ said, you can try to wrap up nosetests into your own
run_tests() method but IIRC the Django plugin for nose is already
hooking into setup_test_environment() which is what is loading your
fixture data (I think).  To do some monkey patching before fixtures
are loaded then you can create a custom nose plugin and give it a
score attribute of 1 so that it gets executed before nose's Django
plugin.

Docs and recipes for writing plugins are here:
http://somethingaboutorange.com/mrl/projects/nose/doc/writing_plugins.html

You probably want something simple like this:

import os
from nose.plugins.base import Plugin

class MonkeyPatch(Plugin):
    enabled = True
    name = 'mokeypatch'
    score = 1

    def options(self, parser, env=os.environ):
        pass

    def configure(self, options, conf):
        pass

    def begin(self):
        monkey_patch_whatever()

>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to