• python+selenium自动化框架的POM思想


    ###################################

    Selenium中使用POM的特点和优点?
    1)  POM是一种设计模式,它能帮我们维护代码和减少代码的重复,这个在自动化测试领域是一个很重要的话题。
    2)  在具体实施中,一个页面看做一个页面对象,每个页面写一个类。
    3)  你可以把一个页面的元素的全部定位方式和该页面的业务操作方法写在一个类文件,然后在测试脚本类文件去调用页面类的元素和方法。
    这样就有一个好处,你的软件产某一个界面出现了变化,你只需要修改对应页面的元素定位和相关方法,而不需要去修改你的测试脚本,
    当然除非你这个页面由于需求问题,之后被砍了,你才要去修改你的测试脚本类。
    4)  在POM中,我们把测试脚本和页面对象分层,例如页面对象统一放一个包下面,测试用例脚本统一放另外一个包下,到达测试脚本和页面对象分离。

    ########################################

    ##########################################

    POM,中文:页面对象模型,POM是近几年非常流行的自动化测试模型,或者思想,POM不是框架,是解决问题的一种思想。
    采用POM目的:为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大
    POM思路:把页面元素和业务逻辑和测试脚本分离开到两个不同的类文件。class A只写页面元素定位,和业务逻辑代码操作的封装,class B只写测试脚本,
    不关心如何元素定位,只写调用class A的代码去覆盖不同的测试场景,如果前端页发生变化,只需要修改Class A的元素定位,而不需要去修改class B中的测试脚本代码。
    POM主要有以下优点:
    1. 把web ui对象仓库从测试脚本分离,业务代码和测试脚本分离。
    2. 每一个页面对应一个页面类,页面的元素写到这个页面类中。
    3. 页面类主要包括该页面的元素定位,和和这些元素相关的业务操作代码封装的方法。
    4. 代码复用,从而减少测试脚本代码量。
    5. 层次清晰,同时支持多个编写自动化脚本开发,例如每个人写哪几个页面,不影响他人。
    6. 建议页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。

    ######################################

    框架基本组件
    
    我们来思考下框架组成部分:
    1)需要配置文件管理
    2)业务逻辑代码和测试脚本分离
    3)报告和日志文件输出
    4)自定义的库的封装
    5)管理、执行脚本方式
    6)第三方插件引入
    7)持续集成
    
    解释:
          我们需要一个配置文件去控制一些,环境信息,开关,配置文件可以是txt/xml/yaml/properties/ini,一般.properties使用较多在JAVA里,本文是Python系列,我可能会选择ini文件。
           业务逻辑代码和测试脚本分离,不像我们刚开始学习Selenium那样,代码和脚本在一个类文件里演示。我们根本没有用到代码重构,复用。代码和用例文件分离后,更加清晰,去多人开发脚本,方便调试。
           报告和日志文件输出,你执行了多少case,case结果如何,这都需要报告来展示,一般采用第三方插件来实现这个功能,好多报告格式是html,简单,明了的风格。日志输出也很重要,如果发生报错,脚本执行失败,通过日志快速定位发生问题位置。
          用户自定义库,这个很好理解,我们很多功能需要重复调用,这样我们就写成一个公用方法,放到工具包下,每次方便调用,例如浏览器引擎类和basepage.py的封装。
          管理和执行脚本的方式,例如Python中单元测试框架unittest使用率非常高。
          第三方插件,有时候,我们一些功能,需要借助第三方插件,能够更好实现,例如AutoIT,来实现文件上传和下载。还有利用第三方报告插件生成基于html格式的测试报告。
          持续集成,git,svn,ant,maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键执行测试脚本。
    
    根据以上的特点介绍,我大致用以下图来描述一下,一个简单的自动化测试框架,可能包含哪些组成部分。

    ########################################

    ############################################

  • 相关阅读:
    YUM安装MySQL 8.0
    linux 设置 别名 全局命令
    2018.3.12校内互测总结-生成函数-bitset-二次剩余
    Dirichlet 前缀和与快速莫比乌斯变换(FMT)
    CSP-S2 赛后总结
    概率和期望
    【题解】[洛谷 P4396 / bzoj 3236] 作业【莫队 分块 根号平衡】
    【题解】[LOJ 2736] 「JOISC 2016 Day 3」回转寿司【分块 堆】
    【题解】[UOJ 228] 基础数据结构练习题【线段树 均摊数据结构】
    【题解】[Codeforces 438D] The Child and Sequence【线段树 均摊数据结构】
  • 原文地址:https://www.cnblogs.com/andy0816/p/12721761.html
Copyright © 2020-2023  润新知