2015-04-10 5 views
2

Когда я запускаю тест с параметрами я должен быть в состоянии получить доступ фактический параметр теста думал по просьбе в param атрибут, но вместо этого получил эту ошибку:AttributeError: подзапрос экземпляр не имеет атрибута «параметров»

AttributeError: SubRequest instance has no attribute 'param' 

Этот кажется, появляется только тогда, когда я использую тестовую структуру pytest-bdd. В следующем примере моего испытательного стенда:

@pytest.fixture(params=(
    { 
     'driver_name': 'remote', 
     'url': 'http://x.x.x.x:4444/wd/hub', 
     'browser': 'safari', 
     'platform': 'MAC' 
    }, 
    { 
     'driver_name': 'remote', 
     'url': 'http://x.x.x.x:4444/wd/hub', 
     'browser': 'chrome', 
     'platform': 'MAC' 
    } 
)) 
def browser_kwargs(request): 
    """Webdriver kwargs.""" 
    return request.param 

@pytest.fixture 
def browser(browser_kwargs): 
    """Splinter webdriver""" 
    return Browser(**browser_kwargs) 
+0

Можете ли вы опубликовать verson пакетов python, которые вы используете? – lapinkoira

+0

@lapinkoira: splinter == 0.7.2, pytest == 2.7.0, pytest-bdd == 2.6.2, pytest-django == 2.8.0, Django == 1.7.4, Python 2.7.6 –

+1

почему Если вы хотите использовать pytest-splinter и параметризовать splinter_webdriver, если вам нужно? –

ответ

0

Исправление для меня было, чтобы остановить давая мой тестовый класс наследует от unittest2.TestCase:

class ViewTestSuite(unittest2.TestCase): 
    '''Raises error''' 

class ViewTestSuite(): 
    '''No error''' 

кажется (хотя я не уверен), что в моем случае, настоящий преступник был скрыт глубоко внутри pytest, и, кажется, был AttributeError:

AttributeError("'TestCaseFunction' object has no attribute 'callspec'",) 

поймали here, , вызывающий param не устанавливается на request (SubRequest в этом случае).

Смежные вопросы