Доброго дня!
В одной из лекций Алексея Баранцева говорится о том, как можно организовать передачу тестовых данных из файла. Но у меня возник вопрос: если у меня есть большое количество наборов для одного и того же теста. Например, есть множество вкладок поиска, для каждой из которых свой набор данных, но тестируют они все 1 функциональность - поиск.
На текущий момент получается, что для каждого набора данных нужно создавать свой файл с данными. Я же хочу сделать следующее: поместить все наборы данных в 1 файл, а в тестовых функциях указывать, какой набор использовать. Отсюда вопрос: как это реализовать?
conftest:
def pytest_generate_tests(metafunc): for fixture in metafunc.fixturenames: if fixture.startswith("data_"): module = load_from_module(fixture[5:]) metafunc.parametrize(fixture, module, ids=[repr(id) for id in module]) def load_from_module(module): return importlib.import_module("data.%s" % module).testdata # get the rest of data_ from test method param and look for in data dir
файл с данными:
from model.search_export import * dn_dn = [ SearchExportDB(id="0001", result_type="1", result_number=3, format_type="pdf", expected_result=True), SearchExportDB(id="0002", result_type="1", result_number=3, format_type="doc", expected_result=True), SearchExportDB(id="0003", result_type="1", result_number=3, format_type="csv", expected_result=True), SearchExportDB(id="0004", result_type="1", result_number=0, format_type="csv", expected_result=False), SearchExportDB(id="0005", result_type=None, result_number=3, format_type="csv", expected_result=False), SearchExportDB(id="0006", result_type="2", result_number=3, format_type=None, expected_result=False), SearchExportDB(id="0007", result_type="2", result_number=3, format_type="csv", expected_result=True), SearchExportDB(id="0008", result_type="2", result_number=3, format_type="pdf", expected_result=True), SearchExportDB(id="0009", result_type="2", result_number=3, format_type="doc", expected_result=True), SearchExportDB(id="0010", result_type="2", result_number=0, format_type=None, expected_result=False) ] dn_rec = [ SearchExportDB(id="0001", result_type="1", result_number=3, format_type="pdf", expected_result=True) ]
тесты:
def test_pro_search_export_data_dn_dn(app, data_search_export, data_search_export_donations): searchexport = data_search_export searchdata = data_search_export_donations app.reload_page() app.dbset.open_search_page_donations() app.dbset.open_tab_us() app.dbset.open_dn_tab_us_donor() app.donations.perform_search_tab_us_donor(searchdata) run_export_search_list = app.searchexport.run_export_search(searchexport) result = app.searchexport.check_saved_file(run_export_search_list, searchexport, removeall=True) assert result == True def test_pro_search_export_data_dn_co(app, data_search_export, data_search_export_donations): searchexport = data_search_export searchdata = data_search_export_donations app.reload_page() app.dbset.open_search_page_donations() app.dbset.open_tab_us() app.dbset.open_dn_tab_us_recipient() app.donations.perform_search_tab_us_donor(searchdata) run_export_search_list = app.searchexport.run_export_search(searchexport) result = app.searchexport.check_saved_file(run_export_search_list, searchexport, removeall=True) assert result == True
Т.е., можно ли как-то, указывая, например, data_search_export__dn_dn, конкретизировать, из какого объекта брать данные для конкретного теста?
Заранее благодарен