【发布时间】:2020-06-08 06:39:19
【问题描述】:
我正在努力完成以下工作:
pytest 夹具返回数据库句柄
pytest.mark.parametrize 传递将运行测试的参数
我浏览了 pytest 文档、多个论坛。我没有得到任何答复。有人可以提出解决问题的方法吗?还是另一种方法?
编辑 1: 我希望数据库连接在设置功能中只发生一次。此数据库连接用于所有测试功能。测试函数将针对参数化值中的参数运行。如何从夹具返回 db_conn 值?
import pytest
@pytest.fixture(scope="module")
def conn():
db_conn = get_db_conn()
yield db_conn
db_conn.close()
@pytest.mark.parametrize("arg",[1,2,3])
def test_1(arg):
db_conn.insert(arg)
process(arg)
@pytest.mark.parametrize("arg",["a","b","c"])
def test_2(arg):
db_conn.insert(arg)
process(arg)
【问题讨论】:
-
def test_1(arg)->def test_1(conn, arg)。pytest将为测试签名中未明确参数化的每个参数寻找一个夹具。 (有一些边缘情况,如关键字 args 或mock.patch返回,但它们与您的情况无关)。