python3+Robot Framework+PyCharm自动化测试框架设计
Posted 捏不死的小蚂蚁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3+Robot Framework+PyCharm自动化测试框架设计相关的知识,希望对你有一定的参考价值。
关于自动化测试框架的设计,笔者在前面的随笔里面有介绍和总结,这里结合实际的项目例子做个demo,环境部署参考笔者的的随笔《python3+Robot Framework+PyCharm环境部署及执行脚本》,拿开源的项目管理平台禅道为例。
一、针对项目特点确定选用的开源的测试框架,这里因为要做WEB UI自动化,选择robot framework +selenium2library+databaselibrary,例外一些辅助的第三方库,PyMySQL等等,其他的在做项目遇到现有的库解决不了的情况下,再去想办法,包括自己在robot framework的框架基础上面开发第三方库。
二、分析项目的测试模块,设计数据库表,因为笔者打算把测试用例数据放在MySQL数据库管理。这里以登录功能为例,笔者的是设计的数据库表t_login如下所示:
id | 主键,不为null | 测试用例编号 |
flag | 不为null | 缺省0,0表示执行,1表示不执行 |
account | ||
passwd | ||
expected | 不为null | 期望结果 |
expEx1 | 期望结果扩展字段 |
三、笔者把目录分为3块,keywords,actionwords,testcase。
keywords:颗粒度最小的关键字单元。
actionwords:业务关键字,封装的好可以减少testcese的代码量。
testcase:测试用例脚本。
下面直接上代码,结构一目了然
keywords-》登录关键字.txt
*** Settings *** Library Selenium2Library *** Keywords *** 登录系统成功 [Arguments] ${url} ${account}=admin ${passwd}=Aa123456 ${browser}=chrome ${expAcc}=admin [Documentation] url:请求地址 ... account:账号 ... passwd:密码 ... browser:测试浏览器 ... expAcc:校验参数 open browser ${url} ${browser} maximize browser window wait until element is visible id=account input text id=account ${account} input text name=password ${passwd} click button id=submit wait until page contains ${expAcc} ${page_title} get title run keyword if \'${page_title}\' == \'我的地盘 - 禅道\' return from keyword true ... ELSE return from keyword flase 登录系统失败 [Arguments] ${url} ${account}=admin ${passwd}=Aa123456 ${browser}=chrome [Documentation] url:请求地址 ... account:账号 ... passwd:密码 ... browser:测试浏览器 open browser ${url} ${browser} maximize browser window wait until element is visible id=account input text id=account ${account} input text name=password ${passwd} click button id=submit alert should be present text=登录失败,请检查您的用户名或密码是否填写正确。 timeout=2 ${page_title} get title should be equal ${page_title} 用户登录 - 禅道 close all browsers 退出系统 click element xpath=//*[@class=\'user-name\'] click element xpath=//a[contains(text(),\'退出\')] wait until element is visible id=account ${page_title} get title close all browsers run keyword if \'${page_title}\' == \'用户登录 - 禅道\' return from keyword true ... ELSE return from keyword flase
keywords-》MySQL读取测试数据.txt
*** Settings *** Library DatabaseLibrary *** Variables *** ${dbapiModuleName} pymysql ${db_connect_string} database=\'test\', user=\'root\', password=\'root\', host=\'127.0.0.1\', port=3306 *** Keywords *** 登录MySQL读取测试用例 [Arguments] ${tableName} ${caseId} [Documentation] dbapiModuleName:mysql数据库驱动的名称 ... db_connect_string:MySQL数据库连接信息 ... tableName:数据库表名 ... caseId:测试用例编号 Connect To Database Using Custom Params ${dbapiModuleName} ${db_connect_string} @{queryResults} Query SELECT * FROM ${tableName} where id = ${caseId} log many @{queryResults} ${flag} set variable ${queryResults[0][1]} run keyword if \'${flag}\' == \'0\' return from keyword ${queryResults} ... ELSE return from keyword \'跳过该用例\'
actionwords-》登录操作.txt
*** Settings *** Resource ../keywords/登录关键字.txt Resource ../keywords/MySQL读取测试数据.txt *** Variables *** ${test_url} http://127.0.0.1/zentao/user-login.html ${browser} chrome *** Keywords *** 登录测试 [Arguments] ${caseId} ${testcase} 登录MySQL读取测试用例 t_login ${caseId} ${bool} evaluate isinstance(${testcase}, str) run keyword if \'${bool}\' == \'True\' pass execution if ${testcase} == \'跳过该用例\' ${testcase} ${account} set variable ${testcase[0][2]} ${passwd} set variable ${testcase[0][3]} ${excepted} set variable ${testcase[0][4]} ${expAcc} set variable ${testcase[0][5]} ${actual_result} run keyword if \'${excepted}\' == \'true\' 登录系统成功 ${test_url} ${account} ${passwd} ${browser} ${expAcc} ... ELSE 登录系统失败 ${test_url} ${account} ${passwd} ${browser} run keyword if \'${actual_result}\' == \'true\' 退出系统
testcase-》登录禅道.txt
*** Settings *** Resource ../actionWords/登录操作.txt *** Test Cases *** 登录管理员账户admin 登录测试 1 登录测试主管账号xiajie 登录测试 2 登录测试主管账号xiajie,不输入密码,登录失败 登录测试 3 登录测试主管账号xiajie,密码错误(数据库设置的跳过) 登录测试 4
实际上,写测试用例就很轻松了,结合robot framework的关键字驱动,引入MySQL做持久层数据管理,实现数据驱动测试,直接在MySQL中新增测试数据,测试用例脚本直接调用业务关键字+测试用例编号,脚本易读性非常的好。
最后的执行完成后的测试报告效果:
以上是关于python3+Robot Framework+PyCharm自动化测试框架设计的主要内容,如果未能解决你的问题,请参考以下文章
Robot framework安装python3.7导入HttpLibrary.HTTP报错
Windows系统 - python3(3.7以上版本)部署自动化框架robot framework
robot framework ride.py打不开解决方法