Я написал в pytest прибор, который не был параметризован, но используется многими тестами. Позже мне нужно было параметризовать этот прибор.
Чтобы не пришлось mark.parametrize
все старые тесты, я сделал следующее:
def ldap_con(request):
try:
server_name = request.param
except AttributeError:
server_name = "ldaps://my_default_server"
c = Connection(server_name, use_ssl=True)
yield c
c.unbind()
Теперь я могу иметь оба:
def test_old(ldap_con):
run_test_to_default_connection(ldap_con)
@pytest.mark.parametrize('ldap_con', ['mynewserver'], indirect=True)
def test_new(ldap_con):
run_test_to_new_connection(ldap_con)
Решение имеет несколько недостатков:
- Я ловлю произвольную ошибку атрибута (может быть другой)
- Не учитывает именованные параметры
- Читателю не ясно, есть ли значение по умолчанию
Существует ли стандартный способ определения значения по умолчанию для параметра прибора?