第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何使用用于播種模塊作用域固定裝置的相同代碼正確地對函數(shù)進(jìn)行 pytest

如何使用用于播種模塊作用域固定裝置的相同代碼正確地對函數(shù)進(jìn)行 pytest

郎朗坤 2023-08-22 10:13:12
我創(chuàng)建了一個(gè)固定裝置,可以從數(shù)據(jù)庫中提取數(shù)據(jù)并將其放入 DataFrame 中,以便所有后續(xù)測試都可以在同一查詢輸出上運(yùn)行。相同的代碼在一個(gè)函數(shù)中上演,該函數(shù)啟動我的數(shù)據(jù)處理管道(我正在圍繞該管道構(gòu)建所有這些測試)。我不確定是否要模擬數(shù)據(jù)庫查詢結(jié)果,因?yàn)槲蚁霚y試查詢返回的列名并記錄其他內(nèi)容的唯一性。我感到困惑的是如何正確測試代碼中與夾具執(zhí)行相同操作的函數(shù)output_data。在我的應(yīng)用程序中為燈具復(fù)制代碼是否正確?# df_service.pyfrom project.settings import MSSQL_DB_CON_STR as condef df_from_sql(start_date, months):         sql = f"SELECT * FROM dbo.awesome_table_value_function('{start_date}', {months})"        return pd.read_sql(sql=sql, con=con)    這是我在認(rèn)識到我正在為我實(shí)際上想要測試并用作夾具的功能創(chuàng)建夾具之前開始使用的夾具。# test_df_service.pyimport pytestimport pandas as pd@pytest.fixture(scope="module")def output_data():    from project.settings import MSSQL_DB_CON_STR as con    start_date = "11/1/2019"    months = 4    sql = f"SELECT * FROM dbo.awesome_table_value_function('{start_date}', {months})"        return pd.read_sql(sql=sql, con=con)       return pd.read_sql(sql=sql, con=con)def test_columns(output_data):    expected_columns = ['entity','attribute','value','effective_date']    df = output_data    for col in df.columns:        assert col in expected_columns 
查看完整描述

1 回答

?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

因此,您可以采用以下一種方法來解決此問題:

由于該df_from_sql()函數(shù)位于您的應(yīng)用程序的范圍內(nèi),因此它也應(yīng)該是您真正想要測試的函數(shù)。因此,我會為該函數(shù)編寫一個(gè) pytest 測試,斷言諸如Does it return X number of columnsorIs the number of rows > 0等內(nèi)容(如果您不能保證每次都返回相同的數(shù)據(jù))。

我明白為什么您想要使用該函數(shù)來創(chuàng)建夾具,但這會帶來以下風(fēng)險(xiǎn):

  • 由于某種原因獲取數(shù)據(jù)的功能不起作用。那么你所有的測試都可能會失敗,因?yàn)槟愕臏y試ouput data不是他們所期望的。

  • 數(shù)據(jù)庫中的數(shù)據(jù)可能會發(fā)生變化,因此您會得到與預(yù)期不同的結(jié)果。

理論上,裝置應(yīng)該在空間和時(shí)間上盡可能固定,所以我建議是將所需的數(shù)據(jù)實(shí)際保存output_data在某個(gè)文件中,或者可能保存在數(shù)據(jù)庫的模擬表中,以確保它永遠(yuǎn)不會改變。


查看完整回答
反對 回復(fù) 2023-08-22
  • 1 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號