Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(python)使用@parameterized lib声明驱动程序?_Python_Selenium_Parameterized - Fatal编程技术网

(python)使用@parameterized lib声明驱动程序?

(python)使用@parameterized lib声明驱动程序?,python,selenium,parameterized,Python,Selenium,Parameterized,我正在编写一个用于创建新用户的参数化UI测试。以前我是用@pytest.mark.parametrize()完成的,但现在我决定试试。 我的代码是什么样子的: class TestUsers: @pytest.mark.usefixtures("open_users_page") @pytest.mark.usefixtures("login") @parameterized.expand([ ('username', 'password', 'pass

我正在编写一个用于创建新用户的参数化UI测试。以前我是用
@pytest.mark.parametrize()
完成的,但现在我决定试试。 我的代码是什么样子的:

class TestUsers:

    @pytest.mark.usefixtures("open_users_page")
    @pytest.mark.usefixtures("login")
    @parameterized.expand([
        ('username', 'password', 'password_confirm', 'email'),  # test id
。。。 以及其他参数。 之后:

@pytest.mark.usefixtures("fill_create_user_form")  # where i fill non-parameterized fields
def test_user(self, driver, name, password, password_confirm, email):
    users_page = UsersPage(driver)  # where driver is a geckodriver
    users_page.set_name(name)
    users_page.set_password(password)
    users_page.set_password_conf(passwordConf)
    users_page.set_email(email)
    users_page.click_create_new_user_button()
运行此命令后,我得到错误:
TypeError:test\u user()缺少1个必需的位置参数:“email”
我们试着这样重写它:

def test_user(self, *args, **kwargs)
    print(args, kwargs)
    users_page = UsersPage(driver)
--测试打印参数并转到下一步,然后再转到下一步并使用驱动程序。 我必须指出,这项测试有效:

    def test_empty_fields(self, driver):
    """Try to create a new user with empty input fields - an errors should appear"""
    users_page = UsersPage(driver)
    users_page.click_add_user_button()
    users_page.click_create_new_user_button()
    errors = users_page.find_item_errors_on_page()
    errors_count = len(errors)
    assert errors_count == 9
所以问题是:在这种情况下,我如何使用
self
driver

或者我应该忘记测试类和@parameterized并使用旧的
@pytest.mark.parametrize
?:)

经过几天的调试,我们了解到,当我在测试类之前有几个fixture,然后在类本身中有几个fixture时,其中一些fixture会返回“driver”,那么我就有了以下代码:

@parameterized.expand([
        ("short password", 'username', 'password', 'password', 'email@email.com', '',
         pass_len_errs),
...)
  • parameterized可能认为第一个参数(即“短密码”——测试名称)是驱动程序本身。因此,这可能是一个争论的冲突