如何使用伪造的登录凭据在 Python 测试用例中修补 ftplib.FTP?

How to patch ftplib.FTP in a Python testcase with fake login credentials?

有一个 python 模块,其后跟 x.y.z,其中存在一个函数 :-

from ftplib import FTP

def connect(host,user,pass) :
    ftp = FTP(host, user, pass)

测试用例如下:-

classs testClass(unittest.TestCase)

@patch(x.y.z.FTP)
def test_connect(self,MOCKFTP) :
    mock_ftp_obj = MOCKFTP()
    connect('fakehost','fakeuser','fakepass')

运行 测试用例给出 - 530 登录不正确!

我是不是漏了什么。

问题是路径值不正确 x.y.z.FTP FTP 实际上存在于 ftplib 包中。

以下按预期工作:

x.y.z.py:

import ftplib


def connect(host, user, pass1):
    ftp = ftplib.FTP(host=host, user=user, passwd=pass1)

testz.py:

import unittest
from unittest.mock import patch

from x.y.z import connect


class testClass(unittest.TestCase):

    @patch('ftplib.FTP', autospec=True)
    def test_download_file(self, mock_ftp):
        connect('fakehost','fakeuser','fakepass')
        mock_ftp.assert_called_with('fakehost','fakeuser','fakepass')

如果有帮助,请告诉我。