51Testing软件测试论坛

标题: python如何把复杂的类和方法抽象成简单接口 [打印本页]

作者: 测试积点老人    时间: 2020-10-12 15:35
标题: python如何把复杂的类和方法抽象成简单接口
写关键字驱动的自动化框架时候发现,针对关键字方法的代码比较多和复杂,于是考虑重新写了个类调用这些方法,但感觉上会有些麻烦,有没更好的建议?
例子:
封装了ActionMethod类,处理操作逻辑:

  1. <p>class ActionMethod:
  2. """封装操作类"""</p><p>@exe_record
  3. @func_set_timeout(120)
  4. def click_element(self, driver, obj, data):
  5.     """点击元素"""
  6.     e_time = None
  7.     if data == 0 or data is None or data == '':
  8.         pass
  9.     elif ';' in data:
  10.         s_time = data.split(';')[0]
  11.         e_time = data.split(';')[1]
  12.         if s_time == '0' or s_time is None or s_time == '':
  13.             pass
  14.         else:
  15.             time.sleep(int(s_time))
  16.     else:
  17.         time.sleep(int(data))
  18.     element = GetByLocal.get_clickable_element(driver, obj)
  19.     try:
  20.         time.sleep(0.5)
  21.         element.click()
  22.     except ElementClickInterceptedException:
  23.         driver.execute_script('arguments[0].click()', self.get_element(driver, obj))
  24.         self.logger.get_logger().warning('无法点击,故使用JS点击尝试')
  25.     if e_time and e_time != '':
  26.         time.sleep(int(e_time))</p>
复制代码


再封装了CaseOperation类调用ActionMethod类:

  1. <p>class CaseOperation:
  2. def __init__(self):
  3.     """初始化操作对象"""
  4.     self.action_method = ActionMethod()</p><p>def click_element(self, driver, obj, data=0):
  5.     """
  6.     说明...
  7.     """
  8.     self.action_method.click_element(driver, obj, data)</p>
复制代码


目前采用的是这种形式,有没大神有更好的建议。

作者: qqq911    时间: 2020-10-13 10:06
PO模式你值得拥有
作者: bellas    时间: 2020-10-13 10:30
网上查找下例子吧
作者: 郭小贱    时间: 2020-10-13 11:22
参考这个链接看下 https://q.cnblogs.com/q/129617/
作者: jingzizx    时间: 2020-10-13 13:25
po设计模式




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2