最近一直做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 TestSuite
from robot.api import ResultWriter
from robot.model import Keyword
class 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 =["变量",“参数”)