zoukankan      html  css  js  c++  java
  • UI自动化之分层思想pom模式

    1.什么是POM
    页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库;
    在POM下,应用程序的每一个页面都有一个对应的page class;

    每一个page class维护着该web页的表现层和操作层;
    page class中的方法命名最好根据其对应的业务场景进行,

    例如通常登录后我们需要等待几秒中,我们可以这样命名该方法: waitingForLoginSuccess().

    2.POM优点
    2.1.POM提供了一种在UI层操作、业务流程与验证分离的模式,这使得测试代码变得更加清晰和高可读性
    2.2.对象库与用例分离,使得我们更好的复用对象,甚至能与不同的工具进行深度结合应用
    2.3.可复用的页面方法代码会变得更加优化
    2.4.更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。
    例如我们要回到首页,方法名命名为: gotoHomePage(),通过方法名即可清晰的知道具体的功能实现。

    3.POM模式结构
    project–项目名称
    common–公共方法
    base.py–selenium方法二次封装
    page–封装项目所有页面,每一个pageClass都继承Base类
    loginpage.py–登录页面封装
    homepage.py–首页封装
    script–业务流程/测试用例
    test_login.py–登录功能测试用例;登录流程,引用page中的loginpage文件
    data–存放测试数据
    excel
    txt
    yaml
    config–存放配置文件
    log–测试脚本日志文件
    report–测试报告
    run_case.py执行用例

    4.测试用例管理
    unittest
    编写测试用例:
    特殊方法:
    setUp:在测试用例执行前执行
    tearDown:在测试用例执行后执行
    setUpClass:在测试类中的所有测试用例执行前执行一次,并需要@classmethod装饰器
    tearDownClass:在测试类中的所有测试用例执行后执行一次,并需要@classmethod装饰器
    测试用例编写:
    每个测试用例必须以test开头
    测试用例执行顺序按照ASCII码顺序执行,与编写顺序无关
    跳过测试:skip跳过测试类,跳过测试方法
    断言:assert
    执行测试用例run_case.py:
    在当前文件执行:unittest.main()
    批量执行:
    测试套件:
    discover = unittest.defaultTestLoader.discover(用例目录,pattern=‘用例文件.py’)
    测试执行:
    测试文件名称:
    report_file = “测试报告文件路径+名称”
    with open(report_file,“wb”)as fp:
    runner = HTMLTestRunner.HTMLTestRunner(title=‘自动化测试报告’,
    description=‘用例执行情况:’,
    stream=fp,
    verbosity=2
    )
    runner.run(discover)

    5.测试数据管理
    对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)
    对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
    对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
    对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
    对于邮箱配置的一些参数,可以用ini配置文件
    对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据
    对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的
    6.代码管理
    Git

    7.持续集成
    Jenkins:
    安装,部署,新建项目,配置项目,定时任务…

    最后
    俺叫小枫,一个成天想着一夜暴富的测试员

    (1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
    群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!
    ————————————————
    版权声明:本文为CSDN博主「程序员-小枫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_49346599/article/details/108520638

  • 相关阅读:
    2016工作总结与反思
    JSP 标准标签库(JSTL)
    JQuery遍历CheckBox踩坑记
    JAVA中按照""截取字符串
    file上传图片功能
    List转化为Map
    Map转化为List
    对JAVA的LIST进行排序
    根据制定ID查询信息
    制定查询条数
  • 原文地址:https://www.cnblogs.com/missinglihua/p/14925985.html
Copyright © 2011-2022 走看看