2016-08-08 48 views
4

Neu im unittest-Paket. Ich versuche, den von einer Funktion zurückgegebenen Datenrahmen anhand des folgenden Codes zu überprüfen. Obwohl ich die Eingänge von assert_frame_equal als gleich codiert habe (pd.DataFrame([0,0,0,0])), schlägt der Komponententest immer noch fehl. Jeder möchte erklären, warum es passiert?wie assert_frame_equal im unittest zu verwenden ist

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'

Antwort

6

assert_frame_equal() aus dem pandas.util.testing Paket kommen, nicht aus der unittest.TestCase Klasse. Ersetzen:

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

mit:

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

Wenn Sie self.assert_frame_equal hatte, es assert_frame_equal Attribut auf der unittest.TestCase Instanz zu finden versucht, und, da es nicht assert_frame_equal Attribut oder eine Methode auf ein ausgesetzt ist unittest.TestCase Klasse, erhob es eine AttributeError.