TypeError: readData() missing 1 required positional argument: 'data'

TypeError: readData() missing 1 required positional argument: 'data'

遇到代码错误。我处于 python 的学习阶段, 尝试用 selenium 为 Python 做一个 DDT 框架。

userN = getData.readData(path,'Sheet1',r,1) TypeError: readData() missing 1 required positional argument: 'data'

下面是 XLutil.py

的代码
import openpyxl

class getData():


def getRowCount(file,sheetName):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook.get_sheet_by_name(sheetName)
    return (sheet.max_row)

def getColumnCount(file,sheetName):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook.get_sheet_by_name(sheetName)
    return (sheet.max_column)

def readData(file,sheetName,rownum,columnno):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook.get_sheet_by_name(sheetName)
    return sheet.cell(row=rownum,column=columnno).value

def writeData(file,sheetName,rownum,columnno,data):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook.get_sheet_by_name(sheetName)
    sheet.cell(row=rownum,column=columnno).value = data
    workbook.save(file)

下面是 login.py

的代码
        path = 'c:/Users/mahmood/PycharmProjects/Selenium_automaton/Login.xlsx'
    # global path
    driver = self.driver
    row = getData.getRowCount(path,'Sheet1')
    for r in range(2,row+1):
      driver.get("https://xxx-eee.xyxxxve.com/")
      userN = getData.readData(path,'Sheet1',r,1)
      passW = getData.readData(path,'Sheet1',r,2)

      login = LoginPage(driver)
      login.enter_username(userN)
      login.enter_password(passW)
      login.click_login()

      homepage = HomePage(driver)
      homepage.click_welcome()
      homepage.click_logout()

我正在尝试通过 openpyxl 从 Excel sheet 用户名和密码获取数据,出现以下错误。

Testing started at 6:47 AM ...
C:\Users\mahmood\PycharmProjects\Selenium_automaton\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.3\helpers\pycharm\_jb_unittest_runner.py" --target login.LoginTest
Launching unittests with arguments python -m unittest login.LoginTest in C:\Users\mahmood\PycharmProjects\Selenium\SampleProjects\POMProjectDemo\Tests

C:\Users\mahmood\PycharmProjects\Selenium\SampleProjects\POMProjectDemo\Utility\XLUtil.py:8: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
  sheet = workbook.get_sheet_by_name(sheetName)

Error
Traceback (most recent call last):
  File "C:\Users\mahmood\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 59, in testPartExecutor
    yield
  File "C:\Users\mahmood\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 628, in run
    testMethod()
  File 

> "C:\Users\mahmood\PycharmProjects\Selenium\SampleProjects\POMProjectDemo\Tests\login.py",
> line 26, in test_login_valid
>     userN = getData.readData(path,'Sheet1',r,1) TypeError: readData() missing 1 required positional argument: 'data'


Assertion failed


Ran 1 test in 6.994s

FAILED (errors=1)
text Completed

Python 没有重载,没有第三方 API 像 pythonlangutil.

def readData(file, sheetName, rownum, columnno, data)

正在隐藏

def readData(file, sheetName, rownum, columnno)

因此,当您尝试使用 4 个参数调用它时,您会收到错误消息,因为 readData 需要 5 个参数。您可以改用默认值

def readData(file,sheetName,rownum,columnno, data=None):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook.get_sheet_by_name(sheetName)
    if data:
        sheet.cell(row=rownum,column=columnno).value = data
        workbook.save(file)
    else:
        return sheet.cell(row=rownum,column=columnno).value