kenken999's picture
fda
1afbeb8
raw
history blame
1.69 kB
import duckdb
import pytest
import os
# 関数の定義部分
def create_table_from_csv(db_path, csv_file_path, table_name):
conn = duckdb.connect(db_path)
conn.execute(
f"""
CREATE TABLE {table_name} AS
SELECT * FROM read_csv_auto('{csv_file_path}')
"""
)
conn.close()
def fetch_all_from_table(db_path, table_name):
conn = duckdb.connect(db_path)
result = conn.execute(f"SELECT * FROM {table_name}").fetchall()
conn.close()
return result
# テスト部分
@pytest.fixture
def setup_csv_file(tmpdir):
# テスト用のCSVファイルを作成
csv_file_path = tmpdir.join("test_data.csv")
with open(csv_file_path, "w") as f:
f.write("id,name\n")
f.write("1,John Doe\n")
f.write("2,Jane Smith\n")
return csv_file_path
@pytest.fixture
def setup_db_file(tmpdir):
# テスト用のDuckDBファイルを作成
db_file_path = tmpdir.join("test_db.db")
return db_file_path
def test_create_table_from_csv(setup_db_file, setup_csv_file):
db_path = str(setup_db_file)
csv_file_path = str(setup_csv_file)
table_name = "test_table"
# CSVファイルからテーブルを作成
create_table_from_csv(db_path, csv_file_path, table_name)
# データベースからテーブルのデータを取得
result = fetch_all_from_table(db_path, table_name)
# 期待されるデータ
expected_result = [(1, "John Doe"), (2, "Jane Smith")]
# 結果が期待されるデータと一致することを確認
assert result == expected_result
# テストを実行するためのメイン関数
if __name__ == "__main__":
pytest.main([__file__])