0

我需要在夹具中创建数据库,在这个数据库中对数据进行一些操作(在代码中传递这部分以简化),并使用这个数据库中的行作为参数化测试的值。但是我不能在执行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

4

0 回答 0