如何使用python-pytest断言2个数据帧



我是pytest和dataframe的新手。感谢您的帮助。我有2个数据帧。第一个数据帧是从csv文件中提取的,第二个数据帧则是从数据库中提取的。我需要断言df1中的所有行,以便与df2进行比较。此处df2作为Name"失败"的预期结果;詹姆斯;不相等";琳达";。我正在寻找pytest断言。提前谢谢。

数据帧1:|ID|姓名|DOB|电话||:-----|:-----|-----:|-----:||1|James | 2000年9月1日|0101010||2 | Sam | 1989年1月9日| 2020年2月|

数据框2:|ID|姓名|DOB|电话||:-----|:-----|-----:|-----:||1|Linda|1/2000年9月1日|0101010||2 | Sam | 1989年1月9日| 2020年2月|

源代码

from sqlalchemy import create_engine
import pymysql
import pandas as pd
df1 = pd.read_csv(r'Filename.csv')
sqlEngine = create_engine('mysql+pymysql://root:root@localhost', pool_recycle=3600)
dbConnection = sqlEngine.connect()
df2 = pd.read_sql("SELECT * FROM tablename", dbConnection);
dbConnection.close()
print(df1)
print(df2)
def test_compare_database():
for a, b in zip(df1, df2):
yield a, b
@pytest.mark.parametrize('a, b', test_compare_database())
def test_compare_src_trg_data(a, b):
assert a == b

结果-当我运行上面的代码时,只比较两个数据帧的第一行。

通过测试/main_test.py::test_compare_src_trg_data[ID-ID]0.00
通过测试/main.py::test_cocompare_src_trg_data[名称]0.00
通过测试-main_test-py::test_compare_src_trg_data[DOB-DOB]0.00
通过测试/main-test.py:

您可以使用以下函数:

import pandas as pd
pd.testing.assert_frame_equal(a,b)

最新更新