Pytest 数据夹具导致函数不使用参数 'data' 错误
Pytest data fixture causing function uses no argument 'data' error
我有一个 Python Selenium 测试,使用 pytest fixture 将电子表格中的登录用户名和密码传递到我的测试中。我正在使用 openpyxl 来实现这一点。
我的测试如下:
from Base import InitiateDriver
from Pages import LogIn
import pytest
from DataGenerate import DataGen
import openpyxl
@pytest.mark.parametrize('data', DataGen.data_generator())
def test_new():
browser = InitiateDriver.start_browser()
login = LogIn.LogInClass(browser)
login.enter_username(data[0])
login.enter_password(data[1])
我有一个 DataGen.py 文件可以从这里的电子表格中获取测试数据:
import openpyxl
def data_generator():
wk = openpyxl.load_workbook("/users/marklane/Automation/TestData.xlsx")
sh = wk['login']
r = sh.max_row
li = []
li1 = []
for i in range(1, r + 1):
li1 = []
un = sh.cell(i, 1)
up = sh.cell(i, 2)
li1.insert(0, un.value)
li1.insert(1, up.value)
li.insert(i - 1, li1)
print (li)
return li
当 运行 测试时我得到以下错误:
latform darwin -- Python 2.7.10, pytest-4.3.0, py-1.8.0, pluggy-0.8.1
rootdir: /Users/marklane/PycharmProjects/test, inifile:
Tests/test_TC_001_ValidateRegistration.py:None
(Tests/test_TC_001_ValidateRegistration.py)
In test_new: function uses no argument 'data'
collected 0 items / 1 errors
==================================== ERRORS ====================================
__________ ERROR collecting Tests/test_TC_001_ValidateRegistration.py __________
In test_new: function uses no argument 'data'------------------------------- Captured stdout ----------------------- ---------[[u'marklane2001', u'Ipswichtow1!']]
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!
正如您从错误中看到的那样,可以在电子表格中找到数据,但不会将其传回我的 selenium 行中的 'data'
您必须将参数传递给测试本身才能使用它。
@pytest.mark.parametrize('data', DataGen.data_generator())
def test_new(data):
browser = InitiateDriver.start_browser()
login = LogIn.LogInClass(browser)
login.enter_username(data[0])
login.enter_password(data[1])
我有一个 Python Selenium 测试,使用 pytest fixture 将电子表格中的登录用户名和密码传递到我的测试中。我正在使用 openpyxl 来实现这一点。
我的测试如下:
from Base import InitiateDriver
from Pages import LogIn
import pytest
from DataGenerate import DataGen
import openpyxl
@pytest.mark.parametrize('data', DataGen.data_generator())
def test_new():
browser = InitiateDriver.start_browser()
login = LogIn.LogInClass(browser)
login.enter_username(data[0])
login.enter_password(data[1])
我有一个 DataGen.py 文件可以从这里的电子表格中获取测试数据:
import openpyxl
def data_generator():
wk = openpyxl.load_workbook("/users/marklane/Automation/TestData.xlsx")
sh = wk['login']
r = sh.max_row
li = []
li1 = []
for i in range(1, r + 1):
li1 = []
un = sh.cell(i, 1)
up = sh.cell(i, 2)
li1.insert(0, un.value)
li1.insert(1, up.value)
li.insert(i - 1, li1)
print (li)
return li
当 运行 测试时我得到以下错误:
latform darwin -- Python 2.7.10, pytest-4.3.0, py-1.8.0, pluggy-0.8.1
rootdir: /Users/marklane/PycharmProjects/test, inifile:
Tests/test_TC_001_ValidateRegistration.py:None
(Tests/test_TC_001_ValidateRegistration.py)
In test_new: function uses no argument 'data'
collected 0 items / 1 errors
==================================== ERRORS ====================================
__________ ERROR collecting Tests/test_TC_001_ValidateRegistration.py __________
In test_new: function uses no argument 'data'------------------------------- Captured stdout ----------------------- ---------[[u'marklane2001', u'Ipswichtow1!']]
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!
正如您从错误中看到的那样,可以在电子表格中找到数据,但不会将其传回我的 selenium 行中的 'data'
您必须将参数传递给测试本身才能使用它。
@pytest.mark.parametrize('data', DataGen.data_generator())
def test_new(data):
browser = InitiateDriver.start_browser()
login = LogIn.LogInClass(browser)
login.enter_username(data[0])
login.enter_password(data[1])