乐哈哈yoyo 发表于 2017-6-15 10:57:39

robot 实现自动化 webUI 自动化

本帖最后由 乐哈哈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 piphttps://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的驱动,可以不安装
项目的结构
https://testerhome.com/photo/2016/fa707dcc1f7fd6a3e0e519066499bde2.png


[*]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}   清空元素文本       登录页       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脚本用来跑用例生成报告
[*]#!/usr/bin/env bash
ROOT=$(cd `dirname $0`; pwd)
TIME=$(date +%Y-%m-%d_%H_%M_%S)

function if_error
{
    if [ $1 -ne 0 ]
    then
      echo -e "\033[31mfailed!error code:$1\033[0m"
      exit $1
    else
      echo -e "\033[32msuccess!\033[0m"
    fi
}
function error
{
    echo -e "\033[31m$@\033[0m"
    exit 1
}
function success
{
    echo -e "\033[32m$@\033[0m"
}
function dump
{
    echo -e "\033[44m$1\033[0m"
}

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

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

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

python genLog.py report/$TIME/output.xml demo.html report/email.html
if_error $?

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

草帽路飞UU 发表于 2017-6-15 11:39:47

学习

乐哈哈yoyo 发表于 2017-6-15 11:40:30

草帽路飞UU 发表于 2017-6-15 11:39
学习

:)
页: [1]
查看完整版本: robot 实现自动化 webUI 自动化