51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1807|回复: 1
打印 上一主题 下一主题

[Python测试开发全栈班] 定义类与方法执行报错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-23 14:03:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义类与方法,执行时报“TypeError: test_wxTicket() missing 1 required positional argument: 'driver'”
但不定义类和方法时,执行是OK的


在学课程
佛系玩转APP自动化测试企业级任务

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2019-5-23 14:28:47 | 只看该作者
在面向对象中同一个类不同方法要公用同一个参数的话,在参数定义的前面都要加self。例如:

class spider_Vbugtags:
    def __init__(self):
        a=10
    def test_case1(self):
        print(a)

这个代码就是错误的,要么就是定义成self.a,要么就是传参数a到test_case1方法中,如下:

解决方法1:

class spider_Vbugtags:
    def __init__(self):
        self.a=10
    def test_case1(self):
        print(self.a)

解决方法2:

class spider_Vbugtags:
    def __init__(self):
        a=10
    def test_case1(self,a):
        print(a)
if __name__=='__main__':
    spobj=spider_Vbugtags()
    spobj.test_case1(10)

上传的代码文件中,关于属性的定义不能在main调用的时候写,这个是不正确的。要在类方法中写,在初始化方法中

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

改为self.driver=....

后面的方法中所有使用driver都改为self.driver

如果你要使用传参的方式,那就需要把init方法中的driver对象当成返回值返回,然后在调用其他方法时才能传入

个人建议你先用self.driver,后续可以试着用传参的方法

回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 12:16 , Processed in 0.064425 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表