Перейти к содержимому

Selenium IDE 3: стартовый уровень
онлайн, начало 19 апреля
Школа для начинающих тестировщиков
онлайн, начало 22 апреля
Тестирование REST API
онлайн, начало 22 апреля
Тестирование юзабилити (usability)
онлайн, начало 24 апреля
Фотография

Кастомизация параметризации в pytest


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Borzakovskii Sergei

Отправлено 25 Март 2019 - 19:08

Доброго дня!

В одной из лекций Алексея Баранцева говорится о том, как можно организовать передачу тестовых данных из файла. Но у меня возник вопрос: если у меня есть большое количество наборов для одного и того же теста. Например, есть множество вкладок поиска, для каждой из которых свой набор данных, но тестируют они все 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, конкретизировать, из какого объекта брать данные для конкретного теста?

 

Заранее благодарен


  • 0

#2 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 341 сообщений
  • Город:Н.Новгород

Отправлено 26 Март 2019 - 11:07

https://docs.pytest....rizing-fixtures


  • 0

#3 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Borzakovskii Sergei

Отправлено 26 Март 2019 - 14:24

 

я это читал, но не совсем то, что нужно было.

 

В итоге наименее уродливый вариант, но зато самый простой оказался:

@pytest.mark.parametrize("WHERE", WHAT, ids=[repr(id) for id in WHAT])

+ импорт файла с тестовыми наборами


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале