当前位置: 首页 > news >正文

免费建网站哪家好西安建站平台

免费建网站哪家好,西安建站平台,asp网页制作,西安黄页PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式#xff0c;使用这种模式后#xff0c;可以有效的提升代码的复用能力#xff0c;并且让自动化测试代码维护起来更加方便。 PO模式的全称叫page object model#xff08;POM#xff09;#xff0c;有时候叫做 p…PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式使用这种模式后可以有效的提升代码的复用能力并且让自动化测试代码维护起来更加方便。 PO模式的全称叫page object modelPOM有时候叫做 page object pattern。最开始由马丁福勒提出这个模式受到selenium自动化测试框架大力推广因而成为一种非常主流的自动化测试设计模式。 在PO模式当中每一个UI页面使用编程语言当中的类来表示。在这个类当中通过函数形式定义页面的行为和操作。这让调用方不需要关注具体执行的操作到底是点击还是拖动而是关注具体的业务比如登录、购物等等甚至如果程序员直接把代码给产品经理看他也是能看懂的。 没有使用PO模式时 在测试用例中直接编写浏览器操作API对于代码编写者并没有多高的难度因为他自己已经对这些API非常熟悉但是这些浏览器操作并不能体现业务至少没有产品经理那么熟悉因此他很难和产品经理进行沟通也难和开发沟通甚至在半个月之后他已经忘记了自己到底写了什么东西。 def test_login_mail(self):driver self.driverdriver.get(http://www.xxx.xxx.com)driver.find_element_by_id(idInput).clear()driver.find_element_by_id(xxxxxxx).send_keys(xxxxx)driver.find_element_by_id(xxxxxxx).clear()driver.find_element_by_id(xxxxxxx).send_keys(xxxxxx)driver.find_element_by_id(loginBtn).click() 使用PO模式 使用PO模式有利于梳理业务也有利于和其他人进行沟通。当你把下面这段代码拿给产品经理看的时候他也大概能知道你测的是什么业务能帮你纠正你的测试流程是否正确或者提出一些更有建设性的意见这对于大型项目需要频繁沟通和梳理业务时非常有用。 def test_login_mail(self):LoginPage(driver).login() 而浏览器本身的操作就会被分离到一个更底层的模块这些代码你可以不对调用方暴露产品经理并不关心你这个页面中什么元素定位他也不懂。 class LoginPage:username_loc(By.ID,idInput)password_loc (By.ID,pwdInput)submit_loc (By.ID,loginBtn)span_loc(By.CSS_SELECTOR,div.error-ttp)dynpw_loc (By.ID,lbDynPw)userid_loc (By.ID,spnUid)def __init__(self, driver):self.driver driverdef login(self):self.driver.find_element(*self.username_loc).clear()self.driver.find_element(*self.username_loc).send_keys(xxxxx)self.driver.find_element(*self.password_loc).clear()self.driver.find_element(*self.password_loc).send_keys(xxxxxx)self.driver.find_element(*self.submit_loc).click() 这种方式把元素定位方式也分离了。但是这种元素定位的表达式可读性也不是很强可以换用 property 方式来表示元素所有的元素统一放在一起修改起来也比较方便。 class LoginPage:def __init__(self, driver)self.driver driverpropertydef username_element(self):return self.driver.find_element(id, idInput)propertydef password_element(self):return self.driver.find_element(id, pwdInput)propertydef submit_element(self):return self.driver.find_element(id, loginBtn)def login(self, name, password):self.username_element.send_keys(name)self.password_element.send_keys(password)self.submit_element.click() 第三种方式可以充分利用Python的描述符特性你会发现很多序列化库或者ORM框架都有类似的用法。 class LoginPage:def __init__(self, driver)self.driver driverusername Element(css#idInput, desc用户名输入框)password Element(css#pwdInput, desc密码输入框)confirm Element(css#loginBtn, desc登录确认按钮)def login(self, name, password):self.username.send_keys(name)self.password.send_keys(password)self.confirm.click() 而 Element 类可以通过 Python 描述符实现这里为了方便只定义了xpath的元素定位方法 class Element:def __init__(self,xpathNone,desc):self.xpath xpathself.desc descdef __get__(self, instance, owner):driver instance.browserel driver.find_element(xpath, self.xpath)return el PO模式和DDD PO模式是DDD(领域驱动设计)的一个简单实现但是还不够彻底。如果要在自动化测试中贯彻DDD我觉得还有一些可以优化的空间。 首先某一个业务不一定只是单个页面的操作比如登录不一定只涉及到LoginPage这个页面因此直接在LoginPage中编写login函数就不是很合理。对于调用方来说应该明确说明的是谁在登录而不是指某个页面。像这样 user.login() # or login(user) 我们编写的代码就像是自然语言任何懂英语的人都知道代码在做什么在DDD中叫做领域特定语言DSL 要实现这种逻辑在Page类和调用中间应该还会有一个层级来封装user。 其次Page页面会依赖更底层的资源比如组件元素类型。因此在 Page 类的下方应该会使用 InputElement ButtonElement 、SelectElement 这样的元素类和 HeaderComponent、FooterComponent 这样的组件类。 class LoginPage:username_filed InputElement(xxx)password_filed PasswordElement(xxx) 领域驱动设计对于大型项目梳理业务、同步业务、沟通业务是非常有帮助的是一种以业务为中心的设计范式。PO模式对于DDD的小范围应用以及具体了足够多的好处 便于维护。每一个页面的操作都被单独的存放在一个类文件中当前端页面被修改之后只需要找到对应类文件进行修改其他的代码并不需要进行修改这符合单一职责原则。 便于重复使用。在进行自动化测试的时候一个测试由多个测试步骤组成这些测试步骤可能涉及到多个页面的操作。而用例与用例之间的操作可能重合。PO模式可以重复利用这些测试步骤简化代码的编写。 提高了可读性。页面的操作都被以函数的形式封装起来了。函数名就具备注释的作用其他人阅读代码时可以通过函数了解业务。 总结 感谢每一个认真阅读我文章的人 作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助 软件测试面试文档 我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
http://www.hkea.cn/news/14580882/

相关文章:

  • 网站 app 公众号先做哪个网站tag标签功能实现
  • 石嘴山市建设局网站商品营销推广的方法有哪些
  • 怎么用网站后台做轮播图免费网站建设itcask
  • 顺义顺德网站建设网站开发找什么论文
  • 住房与城乡建设部网站特色小镇网站高中建设工具
  • 济南网站建设云华互动win8导航网站模板
  • 汕头市住房和城乡建设局网站制作相册的软件
  • 网站开发案例详解下载有原型怎么做网站
  • 天价索赔背后的平台版权对垒seo推广分析关键词的第一个步骤
  • 花生壳免费域名注册网站个人又什么办法做企业网站
  • 网站设计会计分录怎么做wordpress 插件 朋友圈
  • 网站内链设置wordpress作者信息插件
  • 什么叫网站企业建立企业网站有哪些优势?
  • 网站建设调查报告范文2022客翻番的推广方法
  • 做网站需要学会什么软件上海建设工程咨询网招聘
  • 网站内容怎么做赣州网上注册公司网站
  • 超能力联盟网站做热处理工艺的网站有哪些
  • 大连模板开发建站修改wordpress 表格
  • 个人网站的作用wordpress取消邮箱
  • 商务网站建设与管理实训总结设计官网需要留言吗
  • 高端大气的网站模板建设网站哪个便宜
  • 东莞网站推广哪家好wordpress泽七
  • 小说网站开发实录铁岭网站制作
  • 网站的空间是服务器吗网站开发交流
  • 网站建设 长安wordpress 食谱网站
  • 高校网站建设方案爱站seo
  • 有什么推广网站泉州市住房与城乡建设局网站
  • php网站开发数据列表排重优化方案官网
  • 深圳网站空间购买安丘网站建设开发
  • 创建网站的快捷方式wordpress安装主题实例 不成功