Lis*_*isa 10 python unit-testing pandas python-unittest
unittest包新手.我正在尝试通过以下代码验证函数返回的DataFrame.即使我将输入硬编码assert_frame_equal为等于(pd.DataFrame([0,0,0,0])),单位测试仍然失败.有人想解释它为什么会发生吗?
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)
Run Code Online (Sandbox Code Playgroud)
Error: AttributeError: 'TestSplitWeight' object has no attribute 'assert_frame_equal'
assert_frame_equal()来自pandas.util.testing包裹,而不是来自unittest.TestCase课堂.更换:
self.assert_frame_equal(pd.DataFrame([0,0,0,0]),pd.DataFrame([0,0,0,0]))
Run Code Online (Sandbox Code Playgroud)
有:
assert_frame_equal(pd.DataFrame([0,0,0,0]), pd.DataFrame([0,0,0,0]))
Run Code Online (Sandbox Code Playgroud)
当你有self.assert_frame_equal,它试图assert_frame_equal在unittest.TestCase实例上找到属性,并且,由于没有assert_frame_equal在unittest.TestCase类上公开属性或方法,它引发了一个AttributeError.
alecxe的答案不完整,您的确可以使用pandas的assert_frame_equal()with unittest.TestCase,使用unittest.TestCase.addTypeEqualityFunc
import unittest
import pandas as pd
import pandas.testing as pd_testing
class TestSplitWeight(unittest.TestCase):
def assertDataframeEqual(self, a, b, msg):
try:
pd_testing.assert_frame_equal(a, b)
except AssertionError as e:
raise self.failureException(msg) from e
def setUp(self):
self.addTypeEqualityFunc(pd.DataFrame, self.assertDataframeEqual)
def test_allZero(self):
self.assertEqual(pd.DataFrame([0,0,0,0]), pd.DataFrame([0,0,0,0]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7552 次 |
| 最近记录: |