2

パラメータを使用してテストを実行すると、リクエストの属性を考慮して実際のテスト パラメータにアクセスできるはず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)
4

1 に答える 1

1

私にとっての修正は、テストクラスがから継承するのをやめることでしたunittest2.TestCase:

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

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

私の場合、本当の犯人は の奥深くに隠されていpytestたようAttributeErrorです(確かではありませんが)。

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

ここでキャッチされ、paramオンに設定されませんrequest(SubRequestこの場合)。

于 2016-05-09T23:05:03.957 に答える