当前位置:   article > 正文

UI自动化测试-PO设计模式_ui自动化po模式

ui自动化po模式

一、什么是PO设计模式

PO设计模式(Page Object)是当前UI自动化较为流行的框架设计模式。其设计思路是把业务抽象化,分层封装成函数。简单的说,就是把页面元素、页面操作、测试用例都分别写在不同的py文件中,分开管理

二、为什么使用PO设计模式

在传统的设计模式中,设计自动化用例时,会将自动化用例的所有步骤写在一个模块中。这样做虽然不用分层管理,写代码时方便许多,但是也带来了很多的问题:

1、维护成本高

在传统设计模式下,当某个元素发生变化时,所有与这个元素有关的用例都需要进行修改。当用例的数量多了以后,浪费的时间是巨量的,还可能存在改错/改漏的情况

2、代码耦合度过高

当所有的步骤写在一个模块里时,若有一个步骤报错,后面的步骤就不会执行。这可能导致一个情况:原本设计好的断言因为报错的原因没有执行到而直接跳过了,在后续排查错误时,查不到相关的日志,给测试人员带来许多不便

3、代码复用度低

由于所有的步骤都写在一个模块里,因此可能很多用例里有相当大一部分代码是重复的。

而PO设计模式的分层思想恰好能解决这个问题,将一部分使用频率较高的操作封装成公用函数后,在设计用例时直接调用即可,不用再写重复的步骤。而元素的分层也能解决耦合度高与维护成本高的问题

三、分层思路

有两种设计思路:

1、公共方法层、页面元素层、测试用例层(三层)

公共方法单独封装为一层,该层存放所有使用频率高的操作函数,例如点击、页面跳转、元素定位、元素等待等操作。

页面元素层中,一个py文件对应一个页面,py文件里,存放这个页面的元素,作为测试用例层的前置准备

测试用例层里,也是一个py文件对应一个页面,与页面元素层不一样的是,这一层的作用是调用页面元素进行操作并断言。

2、公共方法层、页面元素层、页面操作层、测试用例层(四层)

这一种设计思路与前一种不同的地方在于,将页面操作从测试用例层中抽离出来单独再封装一层。让测试用例层专注于断言,而不进行其他的操作。

四、代码示例

下面举一个例子:进入百度首页并输入文字

公共方法层:

  1. class Base_page:
  2. def __init__(self,browser):
  3. self.browser = browser
  4. def redirect_url(self,url):
  5. self.browser.get(url)
  6. def click_element(self,ele):
  7. ele.click()
  8. def input_text(self,ele,text):
  9. ele.send_keys(text)

页面元素层:

  1. from Common_utils import Base_page
  2. from selenium.webdriver.common.by import By
  3. class Page_object(Base_page):
  4. def baidu_input(self):
  5. input_bar = self.browser.find_element(way=By.id,value='kw')
  6. return input_bar

测试用例层:

  1. from Baidu_homepage import Page_object
  2. import time
  3. class Test_baidu(Page_object):
  4. def test_input(self):
  5. input_bar = self.baidu_input()
  6. self.input_text(ele=input_bar,text='测试输入')
  7. time.sleep(0.5)
  8. assert input.bar.get_attribute('value') == '测试输入'

五、总结

1、PO设计模式通过分层,提高了代码的可阅读性以及复用性,使得代码结构更为整洁清晰,降低冗余率

2、用例与页面分层,降低了耦合度

3、不同分层对应不同的用处,降低了维护成本

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/540108
推荐阅读
相关标签
  

闽ICP备14008679号