最近才开始学习 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
领取专属 10元无门槛券
私享最新 技术干货