我是 pytest 和 dataframe 的新手。任何幫助在這里表示贊賞。我有 2 個資料框。第一個資料幀從 csv 檔案中獲取,第二個資料幀從資料庫中獲取。我需要斷言 df1 中的所有行以與 df2 進行比較。df2 失敗的預期結果,因為名稱“James”不等于“Linda”。我正在尋找 pytest 斷言。提前致謝。
資料框 1: | 身份證 | 姓名 | 出生 | 電話| |:---- |:------: | -----:|-----:| | 1 | 詹姆斯 | 1/09/2000|0101010| | 2 | 山姆 | 9/01/1989|0202020|
資料框2: | 身份證 | 姓名 | 出生 | 電話| |:---- |:------: | -----:|-----:| | 1 | 琳達 | 1/09/2000|0101010| | 2 | 山姆 | 9/01/1989|0202020|
源代碼:
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_test.py::test_compare_src_trg_data[Name-Name] 0.00
通過測驗/main_test.py::test_compare_src_trg_data[DOB-DOB]
測驗0.00 Passed py::test_compare_src_trg_data[電話-電話] 0.00
uj5u.com熱心網友回復:
您可以使用以下功能:
import pandas as pd
pd.testing.assert_frame_equal(a,b)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376294.html
下一篇:對資料框中的列
