当我使用参数运行测试时,我应该能够访问实际的测试参数,并考虑请求的param
属性,而是出现此错误:
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 :(得分: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
)。