Как я могу использовать тестовые данные / внешнюю переменную в pytest.dependency? - PullRequest
0 голосов
/ 14 июля 2020

Ниже код pytest работает нормально, он увеличивает value.

import pytest
pytest.value = 1

def test_1():
    pytest.value +=1
    print(pytest.value)

def test_2():
    pytest.value +=1
    print(pytest.value)

def test_3():
    pytest.value +=1
    print(pytest.value)

Вывод:

Prints
2
3
4

Я не хочу выполнять test_2, когда value=2

Возможно ли по pytest.dependency()? Если да, то как я могу использовать переменную value в pytest.dependency?

Если не pytest.dependency, любую альтернативу?

или любой лучший способ обработки такого сценария ios?

    import pytest
    pytest.value = 1
    
    def test_1():
        pytest.value +=1
        print(pytest.value)
    
    @pytest.dependency(value=2)  # or @pytest.dependency(pytest.value=2)
    def test_2():
        pytest.value +=1
        print(pytest.value)
    
    def test_3():
        pytest.value +=1
        print(pytest.value)

Не могли бы вы помочь мне? Это можно сделать? Возможно ли это?

1 Ответ

1 голос
/ 16 июля 2020

Если у вас есть доступ к значению вне теста (как в вашем примере), вы можете пропустить тесты в фикстуре на основе значения:

@pytest.fixture(autouse=True)
def skip_unwanted_values():
    if pytest.value == 2:
        pytest.skip(f"Value {pytest.value} shall not be tested")

В примере как указано выше, где pytest.value устанавливается в 2 после того, как test_1, test_2 и test_3 будут пропущены. Вот результат, который я получаю:

...
test_skip_tests.py::test_1 PASSED                                        [ 33%]2

test_skip_tests.py::test_2 SKIPPED                                       [ 66%]
Skipped: Value 2 shall not be tested

test_skip_tests.py::test_3 SKIPPED                                       [100%]
Skipped: Value 2 shall not be tested
failed: 0


======================== 1 passed, 2 skipped in 0.06s =========================
...