51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2215|回复: 2
打印 上一主题 下一主题

[转贴] robot 实现自动化 webUI 自动化

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2017-6-15 10:57:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 乐哈哈yoyo 于 2017-6-15 10:58 编辑

    robot实现自动化webUI自动化目前项目有这样webUI自动化这样一个需求,考虑到自己技术和精力有限,以及时间比较赶,所以做出一个简单的webUI自动化框架,目前用起来效果还可以,欢迎大家吐槽。。。
    为什么做
    • 目前项目处于初期,服务端仍然有大量需求,但是整体的方向不会有太大变动
    • 项目代码质量不是很好,常常会出现开发提交代码后,部署成功但主要的功能都跑不通的情况,这时候就需要重新打回,影响测试以及开发的进度
    • 项目进度比较赶,有时候可能主要是对新功能进行测试,对以前的功能关注较少,有时候容易出现漏测的情况
    做成啥样
    • 每次开发提测后会自动触发webUI自动化
    • 保证主要的功能能够冒烟通过,通过设置通过率
    • 如果失败会自动给相应的开发发送失败用例的报告
    • 失败的页面自动截图
    装些什么东西
    序号安装包名安装方法下载地址备注
    1pythonexe文件,直接双击安装https://www.python.org/download/releases/2.7.8/安装路径不能有空格,在环境变量PATH中加上Python安装路径
    2setuptools下载ez_setup.py文件,双击https://pypi.python.org/pypi/setuptoolsPython 的套件管理程式,非必需,可以不装
    3pip1.cmd进入ez_setup.py文件目录
    2.用setuptools安装:easy_install pip
    https://pip.pypa.io/en/latest/index.htmlPython的套件管理程式,在PATH最后添加Python的Scripts目录
    4robot frameworkpip install robotframeworkhttps://pypi.python.org/pypi/robotframeworkrobot framework本身
    5wxPythonexe文件,直接双击安装http://wxpython.org/download.php#stable支撑Ride的运行库,需要安装2.8的
    6robotframework-ridepip install robotframework-ridehttps://pypi.python.org/pypi/robotframework-rideRide
    7selenium2librarypip install robotframework-selenium2libraryhttps://pypi.python.org/pypi/robotframework-selenium2libraryselenium2测试库,基于webdriver驱动
    8databaselibrarypip install robotframework-databaselibraryhttps://github.com/franz-see/Robotframework-Database-LibraryDB库
    9requestspip install requestshttps://pypi.python.org/pypi/requestsRequestsLibrary库
    10RequestsLibrarypip install -U robotframework-requestshttps://github.com/bulkan/robotframework-requestshttp request库
    11pyodbcpip install pyodbchttps://pypi.python.org/pypi/pyodbcpython的odbc,解决中文乱码
    12MySQL Connectorexe文件,直接双击安装http://www.mysql.com/downloads/connector/odbc/Mysql的驱动,可以不安装
    项目的结构


    • suite主要是存放各模块测试用例的地方,主要是按功能进行suite划分,比如用户管理
    • driver存放各浏览器的webdriver目录
    • keyword存放所有关键字的资源文件夹,其中包括:
      • action:存放webdriver相关的操作
      • api:存放call api的一些关键字
      • assert:存放有关断言的关键字
      • tool:存放其他的一些工具类关键字,如查询数据库
    • page目前元素是按页面来组织的,页面以csv的形式保存,每次通过读取相应页面的相应元素名称来获取其定位方式,如获取用户信息管理的username_ipt,得到id=username
    • report存放robot产生的测试报告,以及自定义解析xml文件后的测试报告
    • screenshot存放测试失败后截图的目录
    • template存放一些常用的场景模版以后会经常使用的,如登录到运营平台
    • uitls存放自定义的一些py文件
    用例怎么写的
    • 在page文件夹添加相应的页面文件登录页.csv
    • 添加需要测试用到的控件,username_ipt,id,userName,用户名等等
    • 在suite目录添加相应的suite文件运营平台.txt
    • 添加测试用例登录到运营平台并导入keyword中相应的资源文件
    • 开始写具体的用例了登录到运营平台   ${configs}       读取多个配置       url=platform       url=admin   打开浏览器       ${configs[0]}   清空元素文本       登录页       username_ipt   输入文本       登录页       username_ipt       ${username}   清空元素文本       登录页       password_ipt   输入密码       登录页       password_ipt       ${password}   点击按钮       登录页       submit_btn   检查元素是否包含文本       账户平台首页       username_link       ${username}
    怎么跑的每次手动执行robot比较麻烦,利用jenkins每次从git上拉取最新的测试用例,保证项目的持续集成以及自动回归
    • 安装robot插件
    • 增加新自由项目
    • 添加源码管理,因为我们仓库是git,所以选择git
    • 可以设置构建触发器,比如可以设置每天跑一次0 0 * * *
    • 在项目中选择execute shell填入运行的命令,这里自己自己写了个sh脚本用来跑用例生成报告
      1. #!/usr/bin/env bash
      2. ROOT=$(cd `dirname $0`; pwd)
      3. TIME=$(date +%Y-%m-%d_%H_%M_%S)

      4. function if_error
      5. {
      6.     if [ $1 -ne 0 ]
      7.     then
      8.         echo -e "\033[31mfailed!error code:$1\033[0m"
      9.         exit $1
      10.     else
      11.         echo -e "\033[32msuccess!\033[0m"
      12.     fi
      13. }
      14. function error
      15. {
      16.     echo -e "\033[31m$@\033[0m"
      17.     exit 1
      18. }
      19. function success
      20. {
      21.     echo -e "\033[32m$@\033[0m"
      22. }
      23. function dump
      24. {
      25.     echo -e "\033[44m$1\033[0m"
      26. }

      27. dump "check connect..."
      28. ping -c4 XX.XX.XX.XXX #服务器IP
      29. if_error $?

      30. dump "start run test..."
      31. pybot -d report/$TIME $ROOT/suite

      32. dump "start generate html report..."
      33. if [ ! -d $ROOT/report/$TIME ];then
      34.     dump "not found report dir!"
      35.     exit -1
      36. fi

      37. python genLog.py report/$TIME/output.xml demo.html report/email.html
      38. if_error $?
      复制代码

    • 增加构建后步骤,加入Publish Robot Framework test results,设置测试通过目标
    • 通过ExtendedEmailPublisher插件增加邮件模版
    • 构建就可以看到结果了,失败会发邮件给相应开发

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2017-6-15 11:40:30 | 只看该作者
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 08:24 , Processed in 0.068874 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表