Как использовать pytest.mark.parametrize с креплениями [duplicate]

Как уже отмечалось многими, HTML не является обычным языком, который может затруднить его синтаксический анализ. Мое решение состоит в том, чтобы превратить его в обычный язык, используя аккуратную программу, а затем использовать синтаксический анализатор XML для использования результатов. Для этого есть много хороших вариантов. Моя программа написана с использованием Java с библиотекой jtidy , чтобы превратить HTML в XML, а затем Jaxen в xpath в результат.

8
задан elveatles 3 February 2017 в 00:51
поделиться

3 ответа

На данный момент мое единственное решение - создать прибор, который возвращает словарь приборов.

import pytest
import my_package

@pytest.fixture
def dir1_fixture():
    return '/dir1'

@pytest.fixture
def dir2_fixture():
    return '/dir2'

@pytest.fixture
def dir_fixtures(
    dir1_fixture,
    dir2_fixture
    ):
    return {
        'dir1_fixture': dir1_fixture,
        'dir2_fixture': dir2_fixture
    }

@pytest.mark.parametrize('fixture_name, expected', [('dir1_fixture', 'expected1'), ('dir2_fixture', 'expected2')]
def test_directory_command(dir_fixtures, fixture_name, expected):
    dirname = dir_fixtures[fixture_name]
    result = my_package.directory_command(dirname)
    assert result == expected

Не лучший, поскольку он не использует решение, встроенное в pytest, но оно работает для я.

1
ответ дан elveatles 16 August 2018 в 10:33
поделиться

В настоящее время это не поддерживается pytest. Для этого есть открытый запрос функции: https://github.com/pytest-dev/pytest/issues/349 .

2
ответ дан Robie Basak 16 August 2018 в 10:33
поделиться
  • 1
    Создано в 2013 году. Похоже, что нет большой заинтересованности в добавлении этой функции. – elveatles 1 November 2017 в 18:13

Если вы используете pytest 3.0 или более позднюю версию, я думаю, что вы сможете решить этот конкретный сценарий, написав инструмент по строкам:

@pytest.fixture(params=['dir1_fixture', 'dir2_fixture'])
def dirname(request):
    return request.getfixturevalue(request.param)

Документы здесь: http : //doc.pytest.org/en/latest/builtin.html#_pytest.fixtures.FixtureRequest.getfixturevalue

Однако вы не можете использовать этот подход, если устройство, которое вы попытка динамической загрузки параметризована.

В качестве альтернативы вы можете найти что-то с помощью pytest_generate_tests. Я не смог заставить себя заглянуть в это многое.

5
ответ дан Will 16 August 2018 в 10:33
поделиться
  • 1
    Спасибо за ваш ответ, но это не совсем то, что я ищу. Насколько я понимаю, прибор dirname будет запускать каждый прибор по одному за раз. То, что я ищу, - это способ выбора прибора из теста на основе параметров. – elveatles 10 March 2017 в 03:27
  • 2
    Я не совсем уверен, что следую тому, что вы ищете. Тем не менее, если у вас есть какая-то логика, которую вы бы предпочли выполнить в своем тестовом примере, который определяет нужную вам настройку, вы можете вместо этого динамически загрузить прибор с помощью request.getfixturevalue (). – Will 13 March 2017 в 01:42
Другие вопросы по тегам:

Похожие вопросы: