Skip to content
Advertisement

Running unit tests on nested functions

I come from the Java world, where you can hide variables and functions and then run unit tests against them using reflection. I have used nested functions to hide implementation details of my classes so that only the public API is visible. I am trying to write unit tests against these nested functions to make sure that I don’t break them as I develop. I have tried calling one of the nested functions like:

def outer():
    def inner():
        pass

outer.inner()

which results in the error message:

AttributeError: ‘function’ object has no attribute ‘inner’

Is there a way for me to write unit tests against these nested functions? If not, is there a way to trigger the name munging for function names like you can for class variables by prefixing them with __?

Advertisement

Answer

The Python convention is to name “private” functions and methods with a leading underscore. When you see a leading underscore, you know not to try and use it.

Remember, Python is not Java.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement