我將測試my_function(),它返回一個帶有“utc_timestamp”列的 pandas DataFrame。此列包含當前時間戳。def my_function(): df = pd.DataFrame(data=[[1, pd.datetime.utcnow()]], columns=['value', 'utc_timestamp'])如何定義單元測試來測試my_function()的預期輸出。顯然下面的方法是行不通的,因為測試函數(shù)中的當前時間戳不等于創(chuàng)建數(shù)據(jù)幀時的時間戳。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哪一個是最專業(yè)、最pythonic和最pandas-way的?
1 回答

慕尼黑8549860
TA貢獻1818條經(jīng)驗 獲得超11個贊
我不確定你是否找到了單元測試的方法,但這里有一種單元測試你的 DataFrame 的方法......
您必須修補pd.datetime.utcnow函數(shù)并將其設置為返回靜態(tài)日期。然后,您可以使用 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)
添加回答
舉報
0/150
提交
取消