尝试将命令行参数(table_name)带入 pytest(通过 conftest.py,见下文)并在辅助方法中使用该参数在数据库中进行查询,然后使用查询结果使用 @pytest 创建参数化测试输入.mark.parametrize 在 test_ 函数上。
#contents of conftest.py
import pytest
def pytest_addoption(parser):
parser.addoption("--table_name", action="store", default=None, help="enter table name")
@pytest.fixture
def table_name(request):
return request.config.getoption('--table_name')
问题是:命令行参数(table_name)正在使用夹具检索,我们想将其传递给辅助方法以进行查询并将查询结果放入列表中,但由于辅助方法采用夹具,它不能在另一个fixture/test_function之外调用。所以我们不能把列表放入参数化的 test_function params
#helper method
def get_test_cases(table_name):
#connect to DB, makes query
#puts all query results into a list called tests
return tests
#test function
@pytest.mark.parametrize("columns...", (values...)) #list is read as values
def test_function(columns):
#assertion tests
有没有办法使用命令行参数并将数据库查询的结果传递给参数化标记/参数?