我正在尝试使用pytest参数化我的测试。我修改了conftest.py文件以通过pytest_generate_tests挂钩对灯具进行参数化,并添加了灯具本身:
def pytest_generate_tests(metafunc):
data = []
with open('/tmp/search_terms.csv') as search_terms:
while True:
term = search_terms.readline().rstrip()
if not term:
break
data.append(term)
if 'search_term' in metafunc.fixturenames:
metafunc.parameterize("search_term", data)
@pytest.fixture(scope="session")
def search_term(request):
return request.param
现在,我只希望测试打印出我的search_term.csv内容并通过:
def test_print_search_term(search_term):
print search_term
但是,出现以下错误:
test_search_terms.py:None (test_search_terms.py)
conftest.py:34: in pytest_generate_tests
metafunc.parameterize("search_term", data)
E AttributeError: Metafunc instance has no attribute 'parameterize'
我的目标:我想从该csv中读取内容,并根据此CSV中的值参数化我的测试(以及许多其他测试)。我不明白为什么未提取Metafunc.parameterize。我需要单独安装一些东西吗?
此外,是否有更好的方法来完成此操作(即从CSV文件中参数化多个测试?)
最佳答案
py.test将其拼写为“ parameterze”(在“ t”之后没有“ e”)