范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

自动化测试实例二脚本开发(上)

  脚本开发
  完成测试用例后就可以开发测试脚本,一般包括自动化测试框架的开发和功能脚本的开发。在本节中不介绍如何开发自动化测试框架,有兴趣的读者可以参考《QTP 自动化测试与框架模型设计》一书中第 19 章和第 20 章的自动化测试框架的内容。本章介绍该实例中需要调用到的函数。
  (1)公用函数封装。
  在本实例中需要封装的函数主要包括:读取测试用例、输入每个测试用例的测试结果。
  通过获取单元格中数据的行数,可以确定测试用例文档中有多少条测试用例,代码如下: "*************************************************************" "函数/过程名称:GetExcelSheetRowsCount "函数/过程的目的:获取 Sheet 表中记录行数 "假设:无 "影响:无 "输入:无 "返回值:记录行数 "创建者:黄文高 "创建时间:2010/08/11 "修改者: "修改原因: "修改时间: "*************************************************************" Function GetExcleSheetRowsCount(ExcelPath,SheetName) Set ExcelBook = CreateObject("Excel.Application") Set ExcelSheet = CreateObject("Excel.Sheet") Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath) Set myExcelSheet = myExcelBook.WorkSheets(SheetName) GetExcleSheetRowsCount = myExcelSheet.UsedRange.Rows.Count ExcelBook.Quit Set ExcelSheet = Nothing Set ExcelBook = Nothing End Function
  读取单元格中的数据,即获得测试用例值,代码如下: "*************************************************************" "函数/过程名称:GetExcelCells "函数/过程的目的:读取 Excel 表中单元格的值 "假设:无 "影响:无 "输入:无 "返回值:Excel 表中单元格的值 "创建者:黄文高 "创建时间:2010/08/11 "修改者: "修改原因: "修改时间: "*************************************************************" Function GetExcelCells(ExcelPath,SheetName,SheetColumn,SheetRow) Set ExcelBook = CreateObject("Excel.Application") Set ExcelSheet = CreateObject("Excel.Sheet") Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath) Set myExcelSheet = myExcelBook.WorkSheets(SheetName) SheetValue = myExcelSheet.cells(SheetColumn,SheetRow).Value GetExcelCells = SheetValue ExcelBook.Quit Set ExcelSheet = Nothing Set ExcelBook = Nothing End Function
  在该实例中还需要记录每个测试用例执行的结果,封装的代码如下: "*************************************************************" "函数/过程名称:CreateHtmlLog "函数/过程的目的:创建 HTML 格式的日志文件,并写 Header "假设:无 "影响:无 "输入:无 "返回值:无 "创建者:黄文高 "创建时间:2010/08/09 "修改者: "修改原因: "修改时间: "*************************************************************" Public Sub CreateHtmlLog() Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fileSystemObj, fileSpec Dim currentTime currentDate = Date currentTime = Time testName = environment.Value("TestName") Set fileSystemObj = CreateObject("Scripting.FileSystemObject") fileSpec =TestPath&"测试记录"&testName& ".html" Set logFile = fileSystemObj.OpenTextFile(fileSpec, ForAppending, False, True) logfile.writeline("") logfile.writeline("") logfile.writeline("") logfile.writeline("") logfile.writeline("") logfile.writeline(" Test LogFile ") logfile.writeline("") logfile.writeline("") logfile.writeline("size="2">TestCaseName") logfile.writeline("size="2">TestCaseID") logfile.writeline("size="2">TestResult") logfile.writeline("size="2">TestTime") logfile.writeline("size="2">ActualValue") logfile.writeline("size="2">ExpectValue") logfile.writeline(" ") logFile.Close Set logFile = Nothing End Sub "*************************************************************" "函数/过程名称:WriteHtml "函数/过程的目的:写 HTML 日志文件 "假设:无 "影响:无 "输入:无 "返回值:无 "创建者:黄文高 "创建时间:2010/08/09 "修改者: "修改原因: "修改时间: "*************************************************************" Function WriteHtml(BusinessName,TestCaseID,TestResult,TestTime,ActualValue,ExpectValue) Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fileSystemObj, fileSpec Dim currentTime currentDate = Date currentTime = Time testName = environment.Value("TestName") Set fileSystemObj = CreateObject("Scripting.FileSystemObject") fileSpec =TestPath&"测试记录"&testName& ".html" Set logFile = fileSystemObj.OpenTextFile(fileSpec, ForAppending, False, True) logfile.writeline("") logfile.writeline("") logfile.writeline("size="2">"& BusinessName &"") logfile.writeline("size="2">"& TestCaseID &"") if ucase(TestResult) = "Pass" then logfile.writeline(""#006000" face="Tahoma" size="2">"& ucase(TestResult) &"") else logfile.writeline(""#CE0000" face="Tahoma" size="2">"& ucase(TestResult) &"") end if logfile.writeline("size="2">"& TestTime &"") logfile.writeline("size="2">"& ActualValue &"") logfile.writeline("size="2">"& ExpectValue &"") logfile.writeline(" ") logfile.writeline("") logfile.writeline("") logFile.Close Set logFile = Nothing end function
  由于在本实例中需要连接数据库,检查数据库中的数据是否正确,所以将连接数据库的代码进行封装,代码如下: "*************************************************************" "函数/过程名称:ConnectDatabase "函数/过程的目的:连接数据库 "假设:无 "影响:无 "输入:无 "返回值:无 "创建者:黄文高 "创建时间:2010/09/09 "修改者: "修改原因: "修改时间: "*************************************************************" Sub ConnectDatabase() StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:Program FilesHPQuickTest Professionalsamplesflightappflight32.mdb;Persist Security Info=False" Set Conn = CreateObject("Adodb.Connection") Set Rst = CreateObject("Adodb.RecordSet") Conn.Open StrConn End Sub
  (2)单一模式脚本开发。
  自动化测试脚本开发完成后,开始录制脚本,这个阶段主要是将自动化测试的需求转换为一个简单的脚本。
  1)录制登录过程的脚本如下: Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f746e8c4a42371e29270aa8077835adfd4e3e6f" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").Close
  2)录制订票流程的脚本如下: Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f7470899cb23413741ea878e508c7c39c26d007" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").ActiveX("MaskEdBox").Type "040412" Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles" Window("Flight Reservation").WinButton("FLIGHT").Click Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20332 FRA 10:12 AM LAX 05:23 PM AA $112.20" Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").WinEdit("Name:").Set "arivn" Window("Flight Reservation").WinButton("Insert Order").Click Window("Flight Reservation").Close
  3)录制航班信息的脚本如下: Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f7470899cb23413741ea878e508c7c39c26d007" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").ActiveX("MaskEdBox").Type "040412" Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles" Window("Flight Reservation").WinButton("FLIGHT").Click Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20332 FRA 10:12 AM LAX 05:23 PM AA $112.20" Window("Flight Reservation").Close
  4)录制查询订票信息的脚本如下: Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f7474b213b5bb9f7e950286e72b5f0d7487449b" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").WinMenu("Menu").Select "File;Open Order..." Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON" Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "42" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click Window("Flight Reservation").Close
  (3)脚本增强。
  录制好的单一模式脚本的功能很弱,只完成了一个简单的功能,不具备可扩展性,无法兼容不同的测试数据,所以需要对上面的脚本进行增强。在录制单一模式的脚本时,其实有一个功能是通用的,就是登录功能,每个操作的功能都需要先登录系统,所以可将一个正确登录的脚本封装成一个过程,这样可以节约脚本量,也便于维护脚本。在封装登录过程时,需要使用到描述性编程,封装的代码如下: Sub Login() Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "test" Dialog("text:=Login").WinEdit("attached text:=Password:").SetSecure "4f746e8c4a42371e29270aa8077835adfd4e3e6f" Dialog("text:=Login").WinButton("text:=OK").Click wait(5) End Sub
  接着对登录的脚本进行增强操作,增强的原因是脚本需要能正确处理当输入用户名或密码出错的情况。主要需要处理的情况有:输入的用户名为空、输入的用户名少于 4 个字符、输入的密码为空、输入的密码少于 4 个字符。登录功能增强后的脚本如下: Dim errInfo "返回提示的错误信息 Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f772505bb7ff00c6ec281f9808222c2e89cf0ec" Dialog("Login").WinButton("OK").Click If Dialog("Login").Dialog("Flight Reservations").Exist Then errInfo = Dialog("text:=Login").Dialog("text:=Flight Reservations").Static("window id:=65535"). GetROProperty("text") Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click Dialog("Login").Close else wait(5) Window("Flight Reservation").Close End If
  订票流程脚本的增强主要需要处理订票日期未输入和输入错误的情况,订票流程功能增强后的脚本如下: Dim errinfo "返回提示的错误信息 Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f7729c18243dcb0a80aed533ae02ea81b074338" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").ActiveX("MaskEdBox").Type "121212" Window("Flight Reservation").WinComboBox("Fly From:").Select "San Francisco" If Window("Flight Reservation").Dialog("Flight Reservations").Exist Then errinfo = Window("regexpwndtitle:=Flight Reservation").Dialog("text:=Flight Reservations"). Static("window id:=65535").GetROProperty("text") Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click else Window("Flight Reservation").WinComboBox("Fly To:").Select "London" Window("Flight Reservation").WinButton("Flight").Click Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "13800 SFO 10:24 AM LON 12:54 PM AF $127.47" Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").WinEdit("Name:").Set "arivn" Window("Flight Reservation").WinButton("Insert Order").Click End If Window("Flight Reservation").Close
  航班信息查询脚本的增强主要是需要检查当选择出发城市和到达城市后,显示出来的航班信息是否正确,脚本增强时需要获取所有航班信息。增强后的脚本如下: Dim flightinfo "显示所有航班信息 Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f7862cc49d3bfca65cfd26a9797bdbfab09733a" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").ActiveX("MaskEdBox").Type "121212" Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt" Window("Flight Reservation").WinComboBox("Fly To:").Select "London" Window("Flight Reservation").WinButton("Flight").Click flightInfo = Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetROProperty("all items") Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").Close
  查询订票信息脚本增强主要是需要检查该航班号是否存在,如果航班号不存在,会弹出相应的对应信息;如果查询的订单号存在,就会显示出该订单的相关信息。增强后的脚本如下: Dialog("Login").WinEdit("Agent Name:").Set "test" Dialog("Login").WinEdit("Password:").SetSecure "4f78720180a456bfe5666600e64d62d0553bc374" Dialog("Login").WinButton("OK").Click wait(5) Window("Flight Reservation").WinMenu("Menu").Select "File;Open Order..." Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON" Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "55555" Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click If Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Exist Then errInfo = Window("regexpwndtitle:=Flight Reservation").Dialog("text:=Open Order").Dialog ("regexpwndtitle:=Flight Reservations").Static("window id:=65535").GetROProperty("text") Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").WinButton("确定").Click Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Close End If Window("Flight Reservation").Close

刘强东成名不忘江苏父老,忍痛隐退保住兄弟们打下的江山2018年,明州事件彻底将刘强东拉下了神坛。这一年,刘强东被卷进了悉尼性侵案,也就是明州事件的总称。事情一经发酵,外界恨不得将刘强东打入十八层地狱。几乎是没有定论的情况,大众便将强Tata通信将为全球企业推出加强互联网WAN产品据Cnet网4月29日报道,全球数字生态系统推动者Tata通信的全资子公司Tata通信国际公司宣布为全球企业提供IZO互联网WAN的强化版新产品。图片来自CnetIZO互联网广域网一年倒闭3000家,死亡名单触目惊心,跨境为何如此艰难?这一年,跨境电商都过得不容易。从环球易购到JollyChic,从被封号亚马逊大卖到排名前十的电商公司墨灿倒闭,每个暴雷企业背后都有一群供应商遭殃,就像引发了一场集体踩踏式的崩盘。某LeetCode每日一题42。接雨水题目描述给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入height0,1,0,2,1,0,1,3,2,1,2,1输出6解释上面是由数使用PInvoke从Unity高效地与非托管代码对话在上一篇关于PINVOKE的文章中,我们学习了如何从Unity内部调用非托管方法,以及如何跨互操作屏障传递参数和返回值。现在让我们开始DllImport在我们的代码库中到处撒播以获马斯克收购推特,马云被起诉,南京天津杭州的土拍文章来自微信公众号记忆承载。欢迎关注阅读全文。三个问题,来自三波读者,我一次性回答了。第一个问题,马斯克收购推特,代价是440亿美元,计每股54。2美元。他宣布收购前的时候,推特的研究表明锻炼3秒钟也能提高肌肉力量新华社北京4月30日电参考消息29日刊登爱尔兰观察家报网站题为每天锻炼肌肉3秒钟能使你强壮得多的报道。报道摘要如下关于锻炼,我们所有人都喜欢听到的一个词是简短。如果一边是在健身房锻被华为甩在身后,靠卖掉研究楼保命,联手腾讯搞5G,它能活吗?华为,这是一个在中国电信行业中坚持并取得了不起成就的企业。超过爱立信成为全球电信第一,全球手机销量打败了苹果,拿下了5G时代的话语权。曾经是巨大中华四家国内电信行业大佬之一的华为,最省油宝马来了!330e正式发布百公里1。7L,华晨同步引进可挂绿牌现在的车企都很会看市场走势,这几年,汽车消费市场大刮新能源之风,自然引得众多厂家纷纷效仿,竞争者除了老牌厂家也不乏刚刚兴起的企业,一直在汽车销售市场占据有利地位的宝马自然也不会放过真正的快递王者几乎被多数人遗忘,如今营收4900亿远超顺丰!随着网络的高速发展,网购现金成为了社会的一道风景线与日俱增,相应而起的物流快递行业也是步入了一个辉煌的时代。说到快递,很多人都会想起来比较常见的顺丰京东亦或者三通一达,这些快递企业汽车中的小米,售价2万,配有倒车雷达,确定能上路?车妹说现如今汽车已经成了代步工具,但是随着汽车数量增加,停车也成为了一个难题,稍微大点的汽车,停车位都不好找,在这样的情况下,很多的企业就看中了小型车市场,比如我们知道的奔驰sma
2021下半年旗舰机怎么选?四款最佳机型推荐,适合才是最好的很多预算充足的朋友不知道如何选择一款适合自己的旗舰机,本文就会为你介绍2021下半年最推荐的四款机型,分析各自的亮点与不足,大家理性选择,适合自己的才是最好的!OPPOFindX3为什么到处都在宣传跨境电商,真实情况是怎样的?跨境电商基本扮演着锦上添花的角色,不能雪中送炭!没有外贸经验的最好不要去做,除非有人愿意带你或者手把手教你。能在1688看到买到的货就不要做跨境了,公版模具,竞争激烈到分分钟想哭。比亚迪再亮剑,e平台3。0才开始挖掘电动车的潜力?比亚迪e平台3。0的出现,将比亚迪新能源之路从上半场电动化到下半场智能化,进一步紧密地结合且带来更多延伸意义。事实上,越随着纯电动车型的发展,我们越能看见电动车结构下的优势,从一开2021年你读了哪些觉得比较好的计算机书籍?2021年出版的新书很多,能够一直被程序员关注的书有这样几本1领域特定语言美马丁福勒(MartinFowler)著,徐昊,郑晔,熊节译领域特定语言DSL,通过Java和C语言分析具为什么很多985研究生宁愿去二本院校做老师也不愿意去阿里或者华为做程序员?针对这个,讲一个身边真实的事。某天有个大学时期的女同学突然找我聊天,说自己在感情方面遇到了困扰,之前一直听说跟男朋友关系很好,所以她说感情遇到了困扰我还觉得挺意外的。她男朋友是一个国产华为魅族手机零下40度也不会关机,为什么苹果手机不抗冻5分钟就黑屏了?谢邀!锂电池的工作原理是电解质通过化学反应产生电流的变化。冬季室外气温较低的情况,锂电池内电解质的移动会变得非常缓慢,从而影响了锂离子在正负极之间的活动性,使得电池在满电状态下也无最新手机好评榜TOP10华为2款,小米名落孙山,荣耀登顶近些年,国产手机行业内卷严重,各家厂商竞争激烈,就拿小米手机来说,一年下来发布不下十款机型,广大米粉直呼拿捏不准选哪款。vivoOPPO这边也是如此,在华为手机时运不齐的情况下,其小米手机点击广告即下载,法院判小米赔偿用户1元近日,范某与小米公司产品责任纠纷一审民事判决书公开,原告范某要求小米公司停止发送广告赔偿因触碰广告自动下载App而损失的数据流量费用1元企查查App显示,法院认为,小米公司向范某推9月9日股市和基金早报一财经要闻1中宣部等四部门对腾讯网易等重点网络游戏企业和游戏账号租售平台游戏直播平台进行约谈。强调各网络游戏企业和平台要严格落实通知各项要求,不折不扣执行向未成年人提供网络游戏的时我的创业路今天我想跟大家分享一下我的亲身经历,我是怎么跟电商扯上瓜葛的!上大学之前我根本不知道所谓的电商是什么,在高考填写志愿的哪一天才知道原来每次网购的平台就叫电商平台。填志愿的时候很纠结Redmi新品现身骁龙870120HzOLED屏虽然小米海外的数字系列新品11T和11TPro还没有发布,但因为有了上代RedmiK30S的成功案例,国内很多用户都在期待着今年的K40S系列,也就是海外的小米11T和11TPro