• Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)


          标题很大,想说的很多,不知道从那开始~~直接步入正题吧

      个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块;整这个原因很简单,就是想能让自己偷点懒、也让减轻一点同事的苦力活;对于自动化测试与人工测试优缺势的问题,这里不想深入讨论,开一个博客收集一些观点然后开个讨论组讨论效果可能会更好。

          标题上列的,是自己对web自动化这块统一的一个想象或是一套完整的自动化应所包含的的部分,目前完成了excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告,待后续开发的还有对接缺陷管理系统+自动编译部署环境+自动验证false、error案例。

         这些天,把自己做的这套,抽离出来,用126邮箱登录做了个简单功能的demo,因为也是边干活边抽时间整理,特别是在126功能业务上面封装的不是太好,认真仔细的童鞋如果看了,应该还能发现有几个缺陷没有修正,分享的demo都是调试通过的,有一部分没有整完或完善, 但不影响整个流程或介绍,具体问题有(登录方式,火狐跟谷歌浏览量不支持手机验证码登录、jsp界面上面的开始时间与一部分汇总统计值没有弄等其它异常pass处理);各位看官~如果看完能有一点点帮助的话、我也就开心了~~好了,上菜~~

         1.excel功能案例参数化

       这部分对自己的要求主要是两个方面:功能测试人员可以维护和看懂该文档、参数化的部分要满足实际的功能业务;最好是不太需要沟通,一看简单明了,那个项是控制啥用的,那些是输入数据、那些是需要检查的点。

       2.业务功能分层设计

      这部分对自己要求:功能业务划分明确,写脚本思路很清晰;先得到一个浏览器、再得到一个页面、再到页面上的某个功能、然后再运行这个功能。应该是还需要增加runTest目录,做为一个main入口;demo就一个功能,所以就没有体现了;这块最核心的点,是对测试数据的参数化的实现和对异常的封装,最麻烦的地方是业务功能判断的逻辑,具体的话,可以看看下面:

     功能对测试数据参数化实现:

    这段代码,是实现测试话登录的;现在回头看,明显有个很严重的问题,哎。。。这里就不修正了。

    功能业务逻辑判断:

    验证结果的判断和得到界面信息输出,这一块业务判断不严谨,实际项目可以根据自己的功能业务特性处理;这套框架里面,没有有到unittest+htmlTestRunner。

        3.mysql数据存储封装

         初始化数据库连接

    表结构的设计可以仔细看下,某个值都是有用的,都很有价值,这里要功能测试人员一看就知道跑的case到底是啥情况,图片只是一个辅助手段,一看数据就明白是最好的。

        数据的插入

    这里需要强调的是对特殊字符的处理,这个非常的关键;因为不单单输入的测试数据还是界面输出的信息数据都可能包含" ' "特殊字符;这里用了*args很精髓,可以处理单个字符串,也可以处理多个字符串;数组类的处理是类似的。

        4.截图模块

    这块没啥想说的

        5.读excel模块

    也没啥说的

       6.日志模块

    这里用的是开源的一个,很不好用;打的日志太底层了;这块是一个需要优化的点。

       7.功能运行类EmailLoginRun.py

     

    具体的项目,建议新建一个TestRun包,建议个main一个入口执行所有功能就好;demo就直接拿功能方法运行了。

      8.web jsp

    jsp这块还多优化的

    运行EmailLoginRun.py类,运行完毕,运行后效果:

    手工把图片移动tomcat容器内,jsp上需要调用。

    访问jsp页面,测试结果的过滤和图片的点击都实现了;统计数数全部的,没有细分统计,开始日期、结束日期没有整。

    数据过滤pass界面。

    未实现部分:

      待续...

    最后:工程demo已压缩,上传在群号:342294158;如果能有帮助到你的地方,我很荣幸;如果看了对你的自动化工程有一点补充,我很开心;如果看了能能增加你的想象或打开你的思维,我很愉快;如果你看完了,没啥作用,那很抱歉,浪费了你宝贵的时间~~

     中午时间现码的,有错别字或语句不通畅的,多多包涵~~

  • 相关阅读:
    lc第319场周赛第三题逐层排序二叉树所需的最少操作数目
    实现自动delete?
    什么是死锁?怎么排查死锁?怎么避免死锁?
    为什么视频流一般都用UDP
    Leetcode 537. 复数乘法(网友思路,自愧不如)
    MFC中使用sqlite3操作数据库 创建、插入、查询、修改、删除数据
    C++ std::set<>是什么 怎么用 遍历
    qt qtextedit 限制富文本复制 限制字符
    set容器判断是否插入成功
    C++ 循环for 引用 for(string & : )
  • 原文地址:https://www.cnblogs.com/webtest/p/4062519.html
Copyright © 2020-2023  润新知