我创建了一个固定装置,可以从数据库中提取数据并将其放入 DataFrame 中,以便所有后续测试都可以在同一查询输出上运行。相同的代码在一个函数中上演,该函数启动我的数据处理管道(我正在围绕该管道构建所有这些测试)。我不确定是否要模拟数据库查询结果,因为我想测试查询返回的列名并记录其他内容的唯一性。
我感到困惑的是如何正确测试代码中与夹具执行相同操作的函数output_data。在我的应用程序中为灯具复制代码是否正确?
# df_service.py
from project.settings import MSSQL_DB_CON_STR as con
def 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)
这是我在认识到我正在为我实际上想要测试并用作夹具的功能创建夹具之前开始使用的夹具。
# test_df_service.py
import pytest
import 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
Qyouu
相关分类