AttributeError:SubRequest实例没有属性' param'

时间:2015-04-10 07:20:33

标签: python selenium pytest splinter

当我使用参数运行测试时,我应该能够访问实际的测试参数,并考虑请求的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)

1 个答案:

答案 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)。