Python 3.x 如何解决缺少论证的问题

Python 3.x 如何解决缺少论证的问题,python-3.x,Python 3.x,我在main.py文件中有以下代码: from AD001 import PasswordTest for row in your_list: print(row[0], row[1]) u = row[0] p = row[1] PasswordTest.test_login(u, p) 此代码调用其他文件: def test_login(self, u, p): self.d

我在main.py文件中有以下代码:

from AD001 import PasswordTest      
for row in your_list:
            print(row[0], row[1])
            u = row[0]
            p = row[1]
            PasswordTest.test_login(u, p)
此代码调用其他文件:

def test_login(self, u, p):
    self.driver.implicitly_wait(10)
    print("Login to AG")
但每次结束时都会出现错误:

>   File "C:/selenium/AISG/IA/Users_role/main_reader.py", line 18, in
> <module>
>     PasswordTest.test_login(u, p) TypeError: test_login() missing 1 required positional argument: 'p'
>文件“C:/selenium/AISG/IA/Users\u role/main\u reader.py”,第18行,在
> 
>PasswordTest.test\u login(u,p)类型错误:test\u login()缺少1个必需的位置参数:“p”

我不明白为什么?

您正在调用的方法是实例方法,这意味着它需要一个类实例作为第一个参数。您直接在类上调用它,因此不会向它传递任何实例。有两种解决方案: -只需调用
PasswordTest()
-通过适当的decorator使
test\u login
成为类方法,如下所示:

@class\u方法
def测试单元登录(cls、u、p):
cls.driver.implicitly_wait(10)
打印(“登录到AG”)

但是您需要将
driver
字段更改为class属性。

您必须在main.py中创建
PasswordTest
类的实例

从AD001导入密码测试
p_test=PasswordTest()
对于您的_列表中的行:
打印(第[0]行,第[1]行)
u=行[0]
p=第[1]行
p_测试。测试登录(u,p)

您可以共享
PasswordTest
文件中的代码吗?定义
test\u login
的范围是什么?它是一种类方法吗?它是否在
PasswordTest
文件中?你需要分享这些信息。现在看来,你的函数需要3个参数,而你给它2个参数,这显然是错误的——你在类上调用它,而不是在实例上调用它。