我正在尝试使用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”)

08-20 04:17