python - Python 模拟函数参数
问题描述
我有一个myfile.py
不接受任何参数的函数。在函数内部,我正在DataFrame
根据从 API 调用返回的数据创建一个熊猫,如下所示:df = pd.DataFrame(api_call_from_helper_function().all_the_data())
. 我正在尝试模拟 API 调用,因此它不会尝试实际连接到 API。以下是我的尝试:
我的文件.py
def make_dataframe_from_data():
df = pd.DataFrame(api_call_from_helper_function().all_the_data())
return df
test_myfile.py
import pandas as pd
from unittest.mock import MagicMock
import myfile
from myfile import make_dataframe_from_data
def test_make_dataframe_from_data(monkeypatch):
mock_df = MagicMock()
mock_instance = MagicMock(return_value=mock_df)
monkeypatch.setattr("pd.DataFrame", mock_instance)
result = make_dataframe_from_data()
mock_instance.assert_called_once()
assert isinstance(result, pd.DataFrame())
在这段代码中,api_call_from_helper_function()
使用了我创建的另一个函数来进行 api 调用,并且附加的.all_the_data()
返回它获得的所有数据。现在我的测试可以模拟 api 调用,api_call_from_helper_function()
但是当我将它作为参数传递给pd.DataFrame
. 我究竟做错了什么?
解决方案
推荐阅读
- robotframework - 拖放关键字似乎在 Selenium2Library 中不起作用?
- sql - 如何在sql server中检查和更改自定义字符串
- azure - 下载我的 Bot 源代码后,如何在本地运行 Microsoft Web App Bot?
- python - 如何将密钥发送到隐藏的密码框
- javascript - 如何将 http:// 替换为 Tel:
- javascript - 如何替换 css 类内容?
- java - Primefaces 对话框在网页中将标题和内容显示为文本
- syntax-error - 主模块中的多个语句
- javascript - 使用 fetchSignInMethodsForEmail 时 Firebase 获取 uid
- python - 无法从 argparse 访问 __doc__ 而不重新定义它