Not possible because the doctests are run outside the function and the
inner_function is not defined outside the scope of my_controller.
It is possible to extract the code of the inner_function and execute
it:

>>> def f():
...     def g(): return 5
...     return 8
>>> eval(f.func_code.co_consts[1])
5

but it is very ugly and I would not reccomend it.

On Jun 29, 12:58 pm, Dan <[email protected]> wrote:
> I'd like to create some tests for functions that exist within a
> controller using web2py's (very convenient) doctest integration. Is
> this possible?
>
> For example, here is a controller with a subfunction and one test
> defined for the controller and another defined for the function within
> the controller:
>
> ---
> def my_controller():
>     """
>     here are some doctests:
>
>     >>> my_controller()
>     35
>
>     >>> inner_function(1,2)
>     3
>
>     """
>
>     def inner_function(a,b):
>         return a + b
>
>     return 5 * inner_function(3,4)
> ---
> and when running tests, I get one error (edited for brevity):
>
> Line 7, ... in my_controller.__doc__
> Failed example:
>     inner_function(1,2)
> Exception raised:
>     Traceback (most recent call last):
>       File "/usr/lib/python2.5/doctest.py", line 1228, in __run
>         compileflags, 1) in test.globs
>       File "... in my_controller.__doc__[1]>", line 1, in <module>
>     NameError: name 'inner_function' is not defined
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to