Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,692 Bytes
b2add11 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
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__])
|