Я пытаюсь сделать установку и демонтаж модулей с помощью pytest-BDD. Я знаю, что вы можете сделать файл environment.py с модулями before_all и after_all. Как мне это сделать в pytest-bdd
Я заглянул в плагин "classic xunit-style setup", и он не работал, когда я его пробовал. (Я знаю, что это больше относится к py-test, а не к py-test bdd).
3 ответа
Вы можете просто объявить pytest.fixture
с autouse=true
и любой областью, которую вы хотите. Затем вы можете использовать прибор request
, чтобы указать демонтаж. Например.:
@pytest.fixture(autouse=True, scope='module')
def setup(request):
# Setup code
def fin():
# Teardown code
request.addfinalizer(fin)
«pytest поддерживает выполнение кода финализации конкретного прибора, когда прибор выходит из области видимости. Используя оператор yield вместо return, весь код после оператора yield служит кодом разрыва:»
См. https://docs.pytest.org/en/latest/fixture.html а>
Например.
@pytest.fixture(scope="module")
def smtp_connection():
smtp_connection = smtplib.SMTP("smtp.gmail.com", 587, timeout=5)
yield smtp_connection # provide the fixture value
print("teardown smtp")
smtp_connection.close()
Простым подходом для меня является использование тривиального приспособления.
# This declaration can go in the project's confest.py:
@pytest.fixture
def context():
class Context(object):
pass
return Context()
@given('some given step')
def some_when_step(context):
context.uut = ...
@when('some when step')
def some_when_step(context):
context.result = context.uut...
Примечание: confest.py позволяет вам обмениваться данными между кодами, а помещение всего файла в один конец дает мне предупреждение о статическом анализе.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.