我正在尝试使用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文件中参数化多个测试?)
答案 0 :(得分:2)
py.test使它“参数化”(在“t”之后没有“e”)