如何在类中的方法中模拟外部函数

use*_*464 5 python unit-testing mocking python-mock

我需要一些模拟方面的帮助。

我在 mymodule.py 中有以下代码:

from someModule import external_function

class Class1(SomeBaseClass):
    def method1(self, arg1, arg2):
        external_function(param)
Run Code Online (Sandbox Code Playgroud)

现在我有测试代码:

import mock
from django.test import TestCase

from mymodule import class1
class Class1Test(TestCase) 
    def test_method1:
        '''how can I mock external_function here?'''
Run Code Online (Sandbox Code Playgroud)

Sim*_*ser 5

你会写:

class Class1Test(TestCase):

    @mock.patch('mymodule.external_function')
    def test_method1(self, mock_external_function):
        pass
Run Code Online (Sandbox Code Playgroud)

看着mymodule函数external_function是直接导入的。因此,您需要模拟,mymodule.external_function因为这method1是执行时将调用的函数。