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

使用pytest测试Pandas时,如何查看导致失败的差异行?

解决pytest中assert_frame_equal显示差异行的问题

pandas.testing.assert_frame_equal()本身就有参数可控制差异显示细节,结合pytest的输出参数就能直接看到差异行:

1. 调整pandas的assert_frame_equal参数

  • 设置verbose=True:这个参数会让pandas输出详细的差异信息,包括具体的行索引、对应列的数值差异,无需额外编写逐行对比代码。
  • 配合容差参数(可选):如果不需要严格精确匹配,用rtol(相对容差)和atol(绝对容差)设置允许的误差范围,避免因浮点精度问题误报差异。
  • 示例代码:
import pandas as pd
from pandas.testing import assert_frame_equal

def test_dataframe_match():
    df_expected = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
    df_actual = pd.DataFrame({'A': [1, 2, 4], 'B': [10, 21, 30]})
    assert_frame_equal(df_expected, df_actual, verbose=True, rtol=1e-3)

运行后会直接提示差异行的索引(比如示例中的索引2和1)以及具体数值差异。

2. 结合pytest的详细输出参数

运行pytest时加上-v( verbose模式)或-vv(更详细模式),能让测试输出包含更多上下文细节,和pandas的verbose=True配合,差异行的信息会更清晰直观。

3. 可选:关闭数据类型检查(按需使用)

如果你的测试允许数据类型存在差异但数值正确,可以加上check_dtype=False,避免因类型问题掩盖数值差异的显示,让输出聚焦于行值的不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:19:49