Функция фиксации данных в Pytest не использует аргумент «data», ошибка - PullRequest
0 голосов
/ 15 марта 2019

У меня есть тестирование Python Selenium, использующееся на приспособлении pytest для передачи имени пользователя и пароля для входа из электронной таблицы в мой тест. Я использую 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 !!!!!!!!!

Как вы можете видеть из ошибки, данные находятся в электронной таблице, но они не передаются обратно "данным" в моих строках селена

1 Ответ

0 голосов
/ 09 апреля 2019

Вы должны передать параметр самому тесту, чтобы вы могли его использовать.

@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])
...