simple (I hope!) problem

Jean-Michel Pichavant jeanmichel at sequans.com
Tue Aug 3 06:09:21 EDT 2010


samwyse wrote:
> I'm writing for the Google app engine and have stubbed my toe yet
> again on a simple obstacle.  Non-trivial app engines programs require
> the import of several modules that aren't normally in my PYTHONPATH.
> I'd like to be able to test my code outside of the app engine
> framework.  I've tried several solutions in the past that worked but
> weren't particularly elegant or portable.  Now I've had a new idea.
> Here's my latest attempt:
>
> import os, re
> if __name__ == '__main__':
>     pass
> else
>     from google.appengine.ext import webapp
>     register = webapp.template.create_template_register()
>
> This works great, except my code makes use of the resister object in
> several places, like this:
>
> register.filter(emptylines)
>
> Fortunately, I don't need the functionality of the object, I just want
> something that won't generate an error when I use it.  So, what is the
> quickest way to to create such an object (replacing the 'pass' in my
> first snippet).  My solution is this:
>
>     class C:
>         def filter(self, *args, **kwds):
>             pass
>     register = C()
>
> but it seems like I should be able to do something "better", as
> measured by lines of code, faking more than just a 'filter' method, or
> both.  Any ideas?  Thanks!
>   

here is a class that accepts any method call without generating an error:

class Stub(object):
    @staticmethod
    def stub(*arg, **kwarg):
        pass
    def __getattribute__(self, name):
        return Stub.stub


s = Stub()
s.foo('bar')
s.bar
s.bar('', '', 5)


JM



More information about the Python-list mailing list