为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用当前时间戳测试 pandas DataFrame

如何使用当前时间戳测试 pandas DataFrame

胡子哥哥 2023-04-25 17:24:21
我将测试my_function(),它返回一个带有“utc_timestamp”列的 pandas DataFrame。此列包含当前时间戳。def my_function():    df = pd.DataFrame(data=[[1, pd.datetime.utcnow()]], columns=['value', 'utc_timestamp'])如何定义单元测试来测试my_function()的预期输出。显然下面的方法是行不通的,因为测试函数中的当前时间戳不等于创建数据帧时的时间戳。class TestCase(unittest.TestCase):    df_out = my_function()    df_expected = pd.DataFrame(data=[[1, pd.datetime.utcnow()]], columns=['value', 'utc_timestamp'])    pd.testing.assert_frame_equal(df_out, df_expected)>> AssertionError: DataFrame.iloc[:, 0] (column name="utc_timestamp") are different哪一个是最专业、最pythonic和最pandas-way的?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我不确定你是否找到了单元测试的方法,但这里有一种单元测试你的 DataFrame 的方法......


您必须修补pd.datetime.utcnow函数并将其设置为返回静态日期。然后,您可以使用 assert 语句来检查两个 DataFrame 是否相等。


import unittest

import pandas as pd

from unittest.mock import patch

from pandas.util.testing import assert_frame_equal


with patch('pandas.datetime.utcnow', return_value="2020-08-16 20:36:06.578174"):

              actual = my_function()

              expected = pd.DataFrame(data=[[1, "2020-08-16 20:36:06.578174"]], columns=['value', 'utc_timestamp'])

              assert_frame_equal(actual, expected)


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信