Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:测试包含在另一个函数中的函数_Python_Pytest - Fatal编程技术网

Python:测试包含在另一个函数中的函数

Python:测试包含在另一个函数中的函数,python,pytest,Python,Pytest,我正在使用Python3、pytest和unittest。我有一个名为parent的函数,其中包含另一个名为child的函数 如何测试内部函数 def parent(): ... def child(): .... ... 只能从父函数中调用该函数。它被称为包埋: def parent(): def child(): print('World') print('Hello') child() print

我正在使用Python3、pytest和unittest。我有一个名为parent的函数,其中包含另一个名为child的函数

如何测试内部函数

def parent():
    ...

    def child():
        ....

    ...

只能从父函数中调用该函数。它被称为包埋:

def parent():
    def child():
        print('World')
    print('Hello')
    child()
    print('Hello')
    child()
    print('Hello')
    child()

parent()
产出:

Hello
World
Hello
World
Hello
World

这取决于您如何使用子方法,但您可以使用类:

要测试:


我认为您只能从父函数内部调用该函数。它被称为“内陷:”,你不能。如果该函数包含在另一个函数中,则它是父函数的实现细节,不应单独测试。您应该能够测试父函数,而不知道它正在调用另一个函数。如果您需要单独调用内部函数并对其进行测试,则不应将其嵌套。我很确定这一点以前已经得到了回答,但找不到它。。。基本上,每次输入外部函数时都会创建内部函数,因此无法对其进行测试,因为它在调用之前并不存在。@MrBean这是否真的取决于Python风格中的优化,但从概念上来说,您必须这样想,是的。
class Parent:
    @classmethod
    def child(cls):
        print('hello')

    @classmethod
    def run(cls, *args, **kwargs):
        cls.child()

Parent.run()
Parent.child()