Как использовать assert_frame_equal в unittest

Новый пакет unittest. Я пытаюсь проверить DataFrame, возвращаемый функцией, через следующий код. Несмотря на то, что я жестко закодировал входы assert_frame_equal равными (pd.DataFrame([0,0,0,0])), unittest все еще не работает. Кто-нибудь хотел бы объяснить, почему это происходит?

import unittest
from pandas.util.testing import assert_frame_equal
class TestSplitWeight(unittest.TestCase):
 def test_allZero(self):
 #splitWeight(pd.DataFrame([0,0,0,0]),10)
 self.assert_frame_equal(pd.DataFrame([0,0,0,0]),pd.DataFrame([0,0,0,0]))
suite = unittest.TestLoader().loadTestsFromTestCase(TestSplitWeight)
unittest.TextTestRunner(verbosity=2).run(suite)
Error: AttributeError: 'TestSplitWeight' object has no attribute 'assert_frame_equal'
1 ответ

assert_frame_equal() поступает из пакета pandas.util.testing, а не из класса unittest.TestCase. Заменить:

self.assert_frame_equal(pd.DataFrame([0,0,0,0]),pd.DataFrame([0,0,0,0]))

с:

assert_frame_equal(pd.DataFrame([0,0,0,0]), pd.DataFrame([0,0,0,0]))

Когда у вас был self.assert_frame_equal, он попытался найти атрибут assert_frame_equal в экземпляре unittest.TestCase и, поскольку атрибут или метод assert_frame_equal, открытый в классе unittest.TestCase, не был показан, он поднял AttributeError.

licensed under cc by-sa 3.0 with attribution.