Как передать аргументы тестовым функциям Selenium в Pytest? - PullRequest
1 голос
/ 14 марта 2019

Я хочу сделать свои тесты более гибкими.Например, у меня есть _test_login_, который может быть повторно использован с несколькими различными учетными данными для входа.Как передать их в качестве аргументов вместо жесткого их кодирования?

Что у меня сейчас есть:

from selenium import webdriver
import pytest
def test_login():
    driver = webdriver.Chrome()
    driver.get("https://semantic-ui.com/examples/login.html")

    emailBox = driver.find_element_by_name("email")
    pwBox = driver.find_element_by_name("password")

    emailBox.send_keys("someLogin")
    pwBox.send_keys("somePW")

Как заменить строковые литералы в последних двух строках чем-то ещегибкий?

Я хочу получить что-то вроде этого:

from selenium import webdriver
import pytest
def test_login(specifiedEmail, specifiedPW):
    driver = webdriver.Chrome()
    driver.get("https://semantic-ui.com/examples/login.html")

    emailBox = driver.find_element_by_name("email")
    pwBox = driver.find_element_by_name("password")

    emailBox.send_keys(specifiedEmail)
    pwBox.send_keys(specificedPW)

Не могли бы вы объяснить, как это сделать, вызвав скрипт как:

pytest main.py *specifiedEmail* *specifiedPW*

1 Ответ

1 голос
/ 14 марта 2019

Попробуйте использовать sys.arg.

import sys
for arg in sys.argv:
    print(arg)
print ("email:" + sys.argv[2])
print ("password:" + sys.argv[3])

Вот как будет выглядеть ваш код:

from selenium import webdriver
import pytest
import sys

def test_login(specifiedEmail, specifiedPW):
    driver = webdriver.Chrome()
    driver.get("https://semantic-ui.com/examples/login.html")

    emailBox = driver.find_element_by_name("email")
    pwBox = driver.find_element_by_name("password")

    emailBox.send_keys(sys.argv[2])
    pwBox.send_keys(sys.argv[3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...