写点什么

软件测试 / 测试开发丨 Python 类的继承常见问题

作者:测试人
  • 2023-09-01
    北京
  • 本文字数:835 字

    阅读完需:约 3 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26681

python 可以多层继承

login_page.py

class  LoginPage:    def __init__(self,username,pwd):        self.username = username        self.pwd = pwd        # 初始化selenium driver        self.driver =  webdriver.Chrome()        # todo: 隐士等待可能后续会和显示等待冲突        self.driver.implicitly_wait(3)        self.driver.get('url')        self.login()
def login(self): pass
复制代码

fc_firstPage.py 类 FcfirstPage 继承类 LoginPage,由于没有重写初始化方法,可以直接继承父类方法

class  FcfirstPage(LoginPage):
# 非车快速查询 def quickly_search(self,cust_id=None,phone_no=None): pass

# 自己选择点击客户ID进入还是客户姓名 def entryCustinfo(self, cust_id=True): pass
复制代码

fcDifficultTask.py 类 FcDifficultTask 继承了类 FcfirstPage,但是重写了初始化方法,那么就不能继承爷爷类的 driver 属性,会报错:FcDifficultTask 没有 driver 属性

class FcDifficultTask(FcfirstPage):    def __init__(self,username,pwd):        self.fc_page = FcfirstPage(username,pwd)        self.driver = self.fc_page.driver

def fc_difficultTask(self): self.quickly_search('1000452573063') self.entryCustinfo() # 报错,FcDifficultTask没有driver属性 self.driver.find_element(By.XPATH,"xx']").click() self.driver.find_element(By.XPATH,"xx").click()
复制代码

解决办法使用 super().init()方法,既可以把父类初始化的参数传递进入,下边的方法又能通过 self 直接引用 driver 属性(即为继承了爷爷类的属性)fcDifficultTask.py

class FcDifficultTask(FcfirstPage):    def __init__(self,username,pwd):        super().__init__(username,pwd)
复制代码


发布于: 刚刚阅读数: 6
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 类的继承常见问题_Python_测试人_InfoQ写作社区