You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pytest测试withdraw函数并避免修改CSV文件?

解决pytest测试withdraw函数时不修改原CSV文件的方法

核心是通过monkeypatch模拟pandas的文件读写方法,彻底绕过真实的capital.csv文件操作:

  • 模拟pd.read_csv返回预设的余额数据,不用读取真实文件
  • 模拟pd.DataFrame.to_csv不执行实际写入,避免修改原文件
  • 保留已有的输入模拟逻辑

修改后的测试代码如下:

import pytest
import pandas as pd
from project import withdraw

def test_withdraw(monkeypatch):
    # 模拟用户输入取款金额1000
    monkeypatch.setattr("builtins.input", lambda _: "1000")
    
    # 替换pd.read_csv,返回我们预设的初始余额(比如2000)
    def mock_read_csv(*args, **kwargs):
        return pd.DataFrame({"Balance": [2000]})
    monkeypatch.setattr(pd, "read_csv", mock_read_csv)
    
    # 替换DataFrame.to_csv,空实现避免写入真实文件
    def mock_to_csv(*args, **kwargs):
        pass
    monkeypatch.setattr(pd.DataFrame, "to_csv", mock_to_csv)
    
    # 断言取款后的余额:2000-1000=1000
    assert withdraw() == 1000

关键说明:

  • 不管真实的capital.csv里是什么内容,测试都会用预设的2000作为初始余额,断言结果稳定可控
  • 模拟的to_csv方法完全不执行写文件操作,不会改动原文件
  • 全程不需要修改待测试的withdraw函数代码

内容的提问来源于stack exchange,提问作者Carlos Fernandes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:52:15