Robot Framework+Python实战学习笔记

最近才开始学习 Robot Framework自动化测试框架,结合Python,感觉使用起来还不错,一开始是用的Sublime Text3+sublime-robot-framework-assistant插件来编写 Robot Framework 脚本,从而学习基础。

查看官方文档,创建编写.robot文件,然后运行。脚本样式如图:

以上只是一个简单的demo图,具体的脚本写法得看官方文档。

Library SeleniumLibrary

*** Test Cases ***

CRM login case

Open Browser https://crm.kemai.com.cn/ chrome

Maximize Browser Window

Input text name=user_name 769316

Input text name=password crm666

click button xpath=//*[@id="login-form"]/ul/li[6]/input

log 测试通过

close Browser

然后就是运行脚本

Robot Framework 运行测试通过命令,检查 _C:\Python36\Scripts_目录下是否有 pybot.bat 文件,正确安装 Robot Framework 一定会生成该文件。 _C:\Python36\Scripts_目录一定要添加环境变量 path。

打开cmd Window 命令提示符,切换到 Robot Framework 项目目录,运行指定用例:

利用pybot 命令运行指定用例。

当用例运行结束,Robot Framework 生成三个文件:output.xml、log.html 和 report.html,。

output.xml记录的测试结果是 XML 文件。根据特定的需要可以编写脚本读取 XML 文件并生成特定的测试报告。

log.html会记录 Robot Framework 运行的每一步操作,主要用于编写测试脚本的过程中查看。

report.html为测试报告,整理性的展示测试用例的运行情况。

通过浏览器打 log.html 查看。

如下图所示:

以上整个利用Robot Framework 编写及运行自动化脚本用例的一个基本流程,下面直接泼出自己所正在做的一个CRM项目运用Robot Framework+Python编写测试用例的实战脚本:

源码如下:

''' Test Cases '''

fromrobot.apiimportTestSuite

fromrobot.apiimportResultWriter

fromrobot.modelimportKeyword

#慧猿CRM登录新增区域测试

classCRM_add_areaTest:

def__init__(self, name, librarys=["SeleniumLibrary"]):

#创建测试套件

self.suite = TestSuite(name)

#导入SeleniumLibrary

forlibinlibrarys:

self.suite.resource.imports.library(lib)

#定义变量

defcreate_variables(self):

variables = {

"$":"https://XXXXXXXX",

"$":"Chrome",

"$":"name=user_name",

"$":"name=password",

"$":"class=loginBut",

"$":"xpath=//*[.='资料']",

"$":"xpath=//*[.='区域信息']",

"$":"id=area_add",

"$":"xpath=//div[@class='form-body']/div[2]/div/input",

"$":"xpath=//*[.='保存']",

"$":"class=km-modal-dialog-msg"

}

fork, vinvariables.items():

self.suite.resource.variables.create(k, v)

#测试用例:启动浏览器

defopen_browsers(self):

test_01 =self.suite.tests.create("启动浏览器")

test_01.keywords.create("Open Browser",

args=["$","$"])

test_01.keywords.create("Title Should Be",

args=["科脉慧猿CRM"])

#测试用例:慧猿CRM登录

deflogin(self):

test_02 =self.suite.tests.create("慧猿CRM登录测试")

test_02.keywords.create("Input Text",

args=["$","769316"])

test_02.keywords.create("Input Text",

args=["$","crm666"])

test_02.keywords.create("Click Button",

args=["$"])

test_02.keywords.create("Sleep",args=["3s"])

#测试用例:断言验证搜索结果标题

defassert_title(self):

test_03 =self.suite.tests.create("断言验证登录结果标题")

test_03.keywords.create("Title Should Be",

args=["科脉慧猿CRM-首页"])

#测试用例:新增区域

defadd_area(self):

test_04 =self.suite.tests.create("新增区域")

test_04.keywords.create("Sleep",args=["5s"])

test_04.keywords.create("Click element",

args=["$"])

test_04.keywords.create("Sleep",args=["3s"])

test_04.keywords.create("Click element",

args=["$"])

test_04.keywords.create("Sleep",args=["3s"])

test_04.keywords.create("Click Button",

args=["$"])

test_04.keywords.create("Sleep",args=["3s"])

test_04.keywords.create("Input Text",

args=["$","测试robot"])

test_04.keywords.create("Click Button",

args=["$"])

test_04.keywords.create("Sleep",args=["3s"])

#测试用例:断言验证新增区域结果

defassert_result(self):

test_05 =self.suite.tests.create("断言验证新增区域结果")

test_05.keywords.create("Page Should Contain Button",

args=["确定"])

#测试用例:关闭测试用例

defclose_browsers(self):

test_06 =self.suite.tests.create("关闭浏览器")

test_06.keywords.create("Close All Browsers")

#运行

defrun(self):

self.create_variables()

self.open_browsers()

self.login()

self.assert_title()

self.add_area()

self.assert_result()

self.close_browsers()

#运行套件

result =self.suite.run(critical="登录测试",

output="output.xml")

#生成日志、报告文件

ResultWriter(result).write_results(

report="report.html",log="log.html")

if__name__ =="__main__":

print("用Python写Robot Framework测试")

suite = CRM_add_areaTest("慧猿CRM登录新增区域测试")

suite.run()

运行结果:

生成的测试报告:

自己网上找了好久都没有找到实战项目的源码,码字不容易,且看且珍惜~

又有许久没有更新文章了,上次不经意间看到自己公司的一些研发大佬也在关注自己写的随笔,并且应用到了实际工作中,对他们的工作有帮助,自己也很是欣慰啊,哈哈哈~

一起学习,共同进步!

2018.6.28

By Tiger

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180628G1YP2L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券