Обновление и обмен переменной между тестами на Pytest - PullRequest
0 голосов
/ 10 февраля 2020

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

def test_123():
    key = 'abc'
    ....
    ---- test_123 PASSED! ----

def test_456():
    key = 'def'
    ....
    ---- test_456 FAILED! ----

И у меня есть еще один тест, последний из которых должен быть выполнен, с целью проверки эти ключи. Но он должен проверять только те ключи, тест которых прошел.

def check_keys():
    # keys = ['abc']
    for key in keys:
    ....

Поскольку эта проверка занимает слишком много времени, лучше проверять все эти ключи сразу, вместо этого в каждом тесте

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

И последний тест должен go пройти через этот список и проверить ключи пройденных тестов.

Я читал о хуках pytest и кеше pytest, но примеры, которые я нашел, были слишком сложными: (

Кто-то может мне помочь? Спасибо!

1 Ответ

0 голосов
/ 10 февраля 2020

Вы могли бы сделать это в conftest.py и с правильно установленным прибором. См. Этот документ.

Если предположить, что область модуля (по существу, все функции в файле) может выглядеть примерно так:

файл conftest.py

import pytest

@pytest.fixture(scope='module')
def myfixture():
    keys = []
    yield keys

mytests.py

def test_myex1(myfixture):
    myfixture.append(1)
    assert True

def test_myex2(myfixture):
    myfixture.append(2)
    assert True

def test_myex3(myfixture):
    print(myfixture)
    if len(myfixture) == 2:
        assert True
    else:
        assert False

Тест 3 пройден, потому что первый тест добавит ключи к myfixture. Будьте осторожны, потому что тест 3 не может пройти независимо в этой настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...