夹具参数化

时间:2020-06-01 15:06:31

标签: python selenium testing pytest

我需要在授权给网页的情况下以不同的用户帐户(所有人都有不同的权限)运行测试。我已经为此目的创建了灯具,因此可以轻松登录:

@pytest.fixture
def login_user1(selenium, credentials):
    page = LoginPage(selenium)
    page.login(credentials)

@pytest.fixture
def login_user2(selenium, credentials):
    page = LoginPage(selenium)
    page.login(credentials)

我还创建了一个固定装置,只需调用一次即可将其参数化为多个用户运行测试。

@pytest.fixture
def multiple_users(request):
    request.getfixturevalue(request.param)

测试的最终夹具看起来像(此版本有效)

@pytest.mark.parametrize('multiple_users', [pytest.param('login_user1'),
                                            pytest.param('login_user2',marks=pytest.mark.xfail)
                                                ], indirect=True)
@pytest.mark.usefixtures("multiple_users")
def test_user_permission(self, selenium):
   page = HomePage(selenium)
   ......

现在,我每次尝试为不同的用户运行时都试图将唯一值传递给测试函数。我尝试做类似的事情,但是没有用。

@pytest.mark.parametrize('multiple_users,value', [(pytest.param('login_user1'), 'value1'),
                                            (pytest.param('login_user2',marks=pytest.mark.xfail), 'value2')
                                                ], indirect=True)
@pytest.mark.usefixtures("multiple_users")
def test_user_permission(self, selenium, value):
   page = HomePage(selenium)
   ......

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

已更新:是的,我最终将页面登录名移入了测试本身,并删除了login_user1和login_user2等固定装置。