2016-08-08 4 views
4

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

ответ

6

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.

 Смежные вопросы

  • Нет связанных вопросов^_^