基于RobotFramework的web自动化测试


本文章内容参考了白夜黑羽教python的教程,出处为http://www.python3.vip/doc/tutorial/selenium/01/

感谢上方大佬!

提前准备的环境及资源:

1.被测系统:白月SMS系统

2.需求文档:点击这里访问

3.基于RobotFrameWork的黑羽robot:点击这里访问

4.安装RobotFramework,执行 :pip install robotframework 即可

5.pycharm

环境OR资源介绍:

1.下载解压bysms.zip后,进入bysms目录,双击运行runserver.bat 即可启动 白月SMS系统。 出现下面这样的信息

 注意:该窗口不能关闭,否则web 系统就会停止

然后可以浏览器访问 登录页面 http://127.0.0.1/mgr/sign.html

输入用户名 :byhy 密码: 88888888

3.黑羽robot

解压下载的zip包,会产生一个名为 autotest_hyrobot 的目录, 这就是hyrobot的自动化项目目录。

 

你修改该目录的名字,比如我们要讲解 自动化测试 白月SMS系统 , 就可以改名为 autotest_bysms

黑羽robot 项目目录中包含

  • cases 目录

    里面存放 自动化测试用例代码

  • cfg 目录

    里面存放 配置文件

  • hyrobot 目录

    里面存放 hyrobot库 和 工具 代码, 开发者不需要 修改里面的内容

  • lib 目录

    里面存放 自动化测试用例 使用的 库 存放的目录

  • run.bat

    运行 黑羽robot, 执行自动化测试 的 脚本

环境的使用:

1.可在pycharm中打开黑羽robot目录,依据用例文档编写测试用例

 图中,每一个用例都对应一个类,不用用例名做类名,因为用例名中可能包含特殊符号

右键点击.py文件,有Synchronize文件的选项,点击后就会出现同名的.robot文件,这个其实就是转换为robotframework语法后的文件,

2.用例设计完成后,在Pycharm中的Terminal或cmd窗口中运行run.bat(直接输入run.bat回车即可)

然后会生成测试结果和测试报告(在Lib文件夹中)

rf.bat是直接用robotframework运行的,如果没有了解过,还是只用run.bat就好了

3.这里插播介绍几个黑羽robot的内置函数:

  <一.划分测试步骤>

(1).在用例的.py文件第一行导入黑羽内置函数包:from hyrobot.common import *

(2).在每个需要表明步骤的位置写: STEP(1,'登录网站')  

如图:

 如此,就可以在生成的结果中看到具体是进行到哪一个步骤时出现了问题。如下图:

  <二.设置检查点>

(1).设计测试用例的时候,如果用例的测试未通过,不能退出测试,下图的写法是错误的

 (2).正确的写法,用CHECK_POINT()函数,传入两个参数,第一个是检查点的描述,第二个是具体的检查方法

   <三.打印可以在log中或报告中显示的内容>

(1).用例中写的print内容是不会在log或report中显示的,只会在pycharm终端显示

(2).如果想让某些内容在log或report中显示,把print换成INFO()即可

4.测试用例中重复的操作,比如打开浏览器,登录的操作,可以做成一个文件放在lib文件夹内

每次要使用的时候,在用例.py文件的第一行导入这个文件即可,如from lib.webui import *

5.但每个用例执行时都要打开浏览器然后登录,不如共享登录环境,在此账号下尽行各种操作,这就是共享数据

同一个环境下用例执行完毕后(数据共享完成后),还需要对环境进行初始化,清除干净所用共享数据,来保证其他环境下用例的执行不会受到影响。

黑羽robot的初始化/清除(和robotframework一样)支持 3种方式

  • 单个用例的初始化、清除
  • 整个用例文件的初始化、清除
  • 整个用例目录的初始化、清除

6.这里插播介绍几个黑羽robot的内置函数:

 <一.创建全局变量>

GSTORE['名字'] = 全局变量名

7.单个用例共享数据的初始化和清除

如图上面的图片↑,先在库函数中准备好全局变量wd(包括在open_browser创建以及新建一个函数get_global_webdriver用来方便引用)

 接着在用例中写好共享数据的创建(setup)和清除(teardown)

图中这个类中的函数的执行顺序是setup-->其他函数-->teardown(teardown中包含了wd.quit()所以其他函数中就不用再写quit了)

这样,每一个用例(类)执行时,都进行了创建共享数据、执行用例、清除共享数据的过程

8.整个用例文件共享数据的初始化和清除

在定义的class之外,定义suite_setup()和suite_teardown()函数,相当于执行这套用例的时候,运行顺序为:suite_setup-->其他类-->suite_teardown()

 假如我在suite_setup和suite_teardown中分别设置了打开浏览器登录账号、退出浏览器,那么也就是说这两个用例共享了数据。

9.整个用例目录的初始化和清除(插播黑羽robot的一个内置文件)

比如有时候会出现整个目录下的用例都需要共享数据环境,那么黑羽robot内置了一个文件,当文件命名为__st__.py时,这个文件所在的最近一层目录中的用例文件,都会使用它里面定义的数据环境,如图所示

 

 那么说明管理员操作和药品操作两个用例文件共用了数据环境,执行顺序如图

 

 10.挑选要执行的测试用例

有时候不需要全部的用例跑一遍,只需要测试其中一部分用例,那么有几种挑选方法:

<一.根据名称挑选>

 

 

 

 

 

 如果名称无规律,并且数量也很多,那么可以创建一个名字为args的参数文件,内容如下

 

 一行一个参数,然后命令的话,敲   run -A args   就可以了

<二.根据标签挑选>

标签的创建:

  ①比如   force_tags = ['登录功能','冒烟测试','UI测试']   放在class类中,那么这个类下的所有用例都会带有此标签。

  ②比如   force_tags = ['登录功能','冒烟测试','UI测试'放在一个.py文件中做全局变量,那么这个py文件中的所有用例都是带有此标签的

  ③比如   force_tags = ['登录功能','冒烟测试','UI测试']   放在__st__.py文件中,那么对应所在的目录下的所有.py文件中的所有用例都会带有此标签。

标签的挑选:

 

 

 11.指定关键测试用例

定义及重要性:如果本次测试中有关键测试用例没有通过,整个测试就被视为测试不通过。

 可以通过命令参数 --critical--noncritical 后面加 标签名称 来指定哪些用例 是 关键用例 或者 非关键用例

 

 

 

 

 

 

 12.代码的debug方法

由于在这个robot框架下,如果代码部分出现问题,不能直接用右键的debug来调试,因为当前的代码是python代码转换成了robotframework格式的代码,所以运行出错去调试的时候不能直接调试python代码。

 

 在修改的过程中,如果不确定某行的代码是否正确,想debug一下,那么需要进行一下配置

 点击如上图所示的debug configurations,添加好代码脚本的路径(找到要调试的代码文件)

接下来点击“+”号,新建一个Python文件,可以命名为“DebugRun”

 

 参数配置如下

 

 Configuration中较为重要的是Module name和Working directory

 Module name直接写robot.run即可

Working directory写文件的根目录

OK后,再回到pycharm代码页面点击debug,就相当于是cd到根目录,运行python -m robot.run cases这个命令,然后代码就会依次debug到断点,最后根据到达断点的数据返回情况判断是哪里出现了异常。

 

 

--end--


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM