最近一直做UI自动化,使用Ranorex软件最软件进行录制。(对于使用录制功能对自己来说是失望的。因为公司考虑快捷高效,没有时间去让你了解代码)我对于UI自动化是持否定态度的,因为我觉得UI耗时耗力,只有一种行为动作,界面测试我倾向于随机测试,这只能保证一种程序化的操作的界面功能是没有问题。
由于公司软件是属于功能型软件。业务的偏重点其实具体明确。根据软件具体问题具体分析。Ranorex是根据软件控件Xpath定位。
录制心得。根据被测软件先进行模块化分析,减少各个测试步骤之间的联系(专业名词好像是耦合),减少各个测试项之间的联系。
然后进行参数化,能够更高效利用各个录制视频,不仅对text选项可以进行参数化,而且还可以对XPath里的某些参数进行参数化。创建套件的变量以及各个测试用例的变量。套件的变量相当于是整体变量,而各个测试用例的变量可以绑定到套件变量,然后可以修改套件变量的值,来修改各个测试用变量。
当然各个测试用也可以导入数据,新建数据,CSV,Excel文件。
判断测试结果,使用vidate空间,来判断测试界面反应的结果是否正确。
最后由于遇到问题,由于前一个测试用例出现问题,导致下一个测试用例无法正常运行,需要添加判断条件,由于我天资聪颖,不会C#的我居然知道语言的也是有if语句。自己添加函数,田间判断条件,如果测试不成功则killprogress 这个软件。这让我觉得我真是能力强大,善于解决疑难杂症。
需要学习新知识:XPath,UI
用python来编辑RobotFamework测试用例
#-*-coding:utf-8 -*-
from robot.api import TestSuitefrom robot.api import ResultWriterfrom robot.model import Keywordclass BaiduSearchTest: #baidu SearchTest def __init__(self , name , librarys=["SeleniumLibrary"]): #create test_suite self.suite= TestSuite(name) # import seleniumliabrary for lib in librarys: self.suite.resource.imports.library(lib) #define var def create_variables(self): variables = { "${baidu}":"http://www.baidu.com", "${browser}": "Firefox", "${search_input}":"id=kw", "${search_btn}":"id=su" } for k,v in variables.items(): self.suite.resource.variables.create(k,v) #testcase:open brower def open_Brower(self): test_01 = self.suite.tests.create("Open_browser") test_01.keywords.create("Open Browser",args =["${baidu}","${browser}"]) test_01.keywords.create("Title Should be",args =["百度一下,你就知道"]) #testcase:baidu_search def search_word(self): test_02 = self.suite.tests.create("Test_baidu") test_02.keywords.create("Input Text",args = ["${search_input}","测试教程网"]) test_02.keywords.create("Click Button",args = ["${search_btn}"]) test_02.keywords.create("Sleep",args = ["5s"]) #测试用例:断言验证搜索结果标题 def assert_title(self): test_03 =self.suite.tests.create("验证") test_03.keywords.create("Title Should Be",args = ["测试教程网_百度搜索"]) #测试用例:关闭测试用例 def Close_Borwser(self): test_04 = self.suite.tests.create("Close_Borwser") test_04.keywords.create("Close All Browsers") #运行 def run(self): self.create_variables() self.open_Brower() self.search_word() self.assert_title() self.Close_Borwser() #运行套件 result = self.suite.run(critical ="baidu_search",output = "output.html") #生成日志,报告文件 ResultWriter(result).Write_results(report = "report.html",log = "log.html")if __name__ == '__main__': print("用Python写RobotFramework测试") suite = BaiduSearchTest("baidu_search") suite.run()测试结果
此代码是看别人博客代码里照着写的,找思路,但是现在还没有看出RobotFamework框架的作用。
test_01=suite.tests.creates("测试"):创建测试用例
test_01.keywords.create("关键字",args =["变量",“参数”)