1

我想让我的测试更灵活。例如,我有一个 _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*

4

2 回答 2

2

尝试使用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])
于 2019-03-14T14:30:33.993 回答
0

实现此目的的另一种方法是在 pytest 中使用“请求”。

def pytest_addoption(parser):
    parser.addoption("--email", action="store", default="myemail@email.com", help="Your email here")
    parser.addoption("--password", action="store", default="strongpassword", help="your password")



from selenium import webdriver
import pytest
def test_login(request):
    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(request.config.getoption("--email"))
    pwBox.send_keys(request.config.getoption("--password"))

在命令提示符下,您可以使用 -

pytest --email="email@gmail.com" --password="myPassword"
pytest --password="mysecondPassword" --email="email2@gmail.com"
pytest --email="email@gmail.com" 

通过这种方法,您可以获得两个优势。

  1. 该命令对用户更友好。
  2. 您可以更方便地设置默认值。
于 2020-11-14T15:17:55.923 回答