Python 3.x 如何解决缺少论证的问题
我在main.py文件中有以下代码: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
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个参数,这显然是错误的——你在类上调用它,而不是在实例上调用它。