我需要在夹具中创建数据库,在这个数据库中对数据进行一些操作(在代码中传递这部分以简化),并使用这个数据库中的行作为参数化测试的值。但是我不能在执行def之前强制pytest执行fixture来创建db。从 db 获取行,所以我的测试使用回溯“sqlite3.OperationalError:没有这样的表:simple_table”
import pytest
import sqlite3
DB_PATH = r'test_db.db'
@pytest.fixture(scope='session', autouse=True)
def create_db():
con = sqlite3.connect(DB_PATH)
con.execute("CREATE TABLE simple_table (id int PRIMARY KEY)")
con.close()
yield
def take_values_from_db():
con = sqlite3.connect(DB_PATH)
values = con.cursor().execute(f"SELECT * from simple_table").fetchall()
con.close()
return list(values)
@pytest.mark.parametrize('value', take_values_from_db())
def test_1(value):
assert value == 1
Windows 10、Python 3.9、Pytest=6.2.5