如何解决缺少参数的问题

时间:2019-12-04 08:41:22

标签: 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.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'

我不明白为什么?

2 个答案:

答案 0 :(得分:3)

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

from AD001 import PasswordTest
p_test = PasswordTest()
for row in your_list:
    print(row[0], row[1])
    u = row[0]
    p = row[1]
    p_test.test_login(u, p)

答案 1 :(得分:0)

您要调用的方法是一个实例方法,这意味着它需要一个类实例作为第一个参数。您直接在类上调用它,因此没有实例传递给它。有两种解决方案: -只需调用PasswordTest().test_login(u, p),实例化该类,或 -通过适当的装饰器将test_login设为类方法,如下所示:

@class_method
def test_login(cls, u, p):
    cls.driver.implicitly_wait(10)
    print("Login to AG")

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