AssertEqual Tests OK, wenn Numph.nDarray gegen Str, ist das erwartet? Oder was habe ich falsch gemacht?
Posted: 28 Feb 2025, 04:43
Mein unittestes kehrt gut zurück, aber als ich meinen Code in der Produktion ausführte, stellte ich fest, dass mein Wert mit quadratischen Klammern „verpackt“ ist. Weitere Untersuchungen zeigen, dass es unter der DF.LOC [] Werte liegt. Ich erwarte einen einzelnen Str -Wert.
Code: Select all
# test class and test code
import pandas as pd
import numpy as np
import unittest
class myclass:
def __init__(self):
mux = pd.MultiIndex.from_arrays([
list('aaaabbbbbccddddd'),
list('tuvwtuvwtuvwtuvw')
], names=['one','two'])
temp_a = np.arange(len(mux))
str_a = [ str(a) for a in temp_a ]
self.df = pd.DataFrame({'col': str_a}, mux)
def get_aw(self):
a = self.df.loc[('a','w')].values
return a
class TestAssert(unittest.TestCase):
def test_assert(self):
myclass_obj = myclass()
result = myclass_obj.get_aw()
expect = '3'
print(type(result))
print(type(expect))
print(f'result:{result}')
print(f'expect:{expect}')
self.assertEqual(result,expect)
if __name__ == '__main__':
unittest.main(verbosity=2)
< /code>
Ergebnisse: (Ich habe erwartet, dass es fehlschlägt) < /p>
test_assert (__main__.TestAssert) ... test_code.py:18: PerformanceWarning: indexing past lexsort depth may impact performance.
a = self.df.loc[('a','w')].values
result:[['3']]
Ergebnisse: < /p>
test_assert (__main__.TestAssert) ... test_code.py:18: PerformanceWarning: indexing past lexsort depth may impact performance.
a = self.df.loc[('a','w')].values[0][0]
result:3
expect:3
ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK