版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、引子作为一个无 dev 经验的 tester 来说,目前遇到许多新的问题,关于 tester 以后的人员 基本素质的构成,现在也有许多说法,在这里,不想过多的铺开讨论了。作为一个 tester , 本身当然必须对 test 这件事情感兴趣, 才能把工作做好。 有的人天生喜欢找茬, 喜欢提意见, 在我看来,就是一个不错的 tester 的料。当你天天对着同一个产品的不同版本不停的测试 的时候,自然会产生一些怨言,由此产生懈怠。“某些功能点我都连着测试了 N 个版本了,肯定不会出错了” “这种基本功能点,怎 么可能出错” 这样的论调是很有可能产生的。 于是, 一个 tester 很有可能在某次 r
2、elease 的 过程中,经验主义的放过了某些功能点的测试。几天后, 一个用户反馈上来,那个功能点出 了问题 .“偷懒”这个词语,在测试过程中,不应该算一个贬义词 (当然了,故意漏过功能点不 测试,不在此列 。因为“偷懒”催生新的技术, “偷懒”节省更多的时间。我相信,自动化 测试就是这样来的。正题任何事情都可以分解为很小的部分, 让我们先分析一下, 手工执行测试案例的一个过程:打开被测软件执行测试案例给出测试结果然后,我们不断重复这个过程。最后给出测试报告。显然, 我们的自动化测试也要满足上面的这个过程中的所有要求。 既然是自动化, 首先 要求是所有的测试用例可以无人值守运行 ; 其次,每个
3、测试用例都由机器来模拟人对软件的 操作 ; 第三,某个测试用例失败不能影响其他测试用例的继续执行 ; 第四,测试数据和测试用 例最好分离开来 ; 最后一点,测试结束之后,给个报告或者给个图告知测试结果。根据上面的分析,我们逐个来一一解决, 当然了,本篇都是很初级的解决方式,相信有 许多大牛会有更好的方式来解决。无人值守运行,那么 python 的 unittest 的框架就能达到这个目的。模拟人的操作, selenium 可以胜任。测试用例间无影响,同 1数据分离,那把测试数据都扔 xml 里。待完善 (本例中只是在部分方法中添加错误提示 开始动手对 python 的 unittest 进行一
4、些小手术,当然了,如果只追求简单,直接用也行。 defassertLogEqual(self, arg1, arg2:print "assertLogEqual('"+arg1+"', '"+arg2+"': "if arg1 != arg2:self.anyfailure = Trueprint " -> Failed: not equal"self.result_note = " '%s' and 's%' is not equal
5、n "%(arg1,arg2else:print " ->OK"self.result_note = "%s OKn" % self.result_noteself.assertEqual(arg1, arg2defassertLogTrue(self, arg1, note="":print "assertLogTrue("+str(arg1+": "+noteif arg1 is False:self.anyfailure = Trueprint " -> F
6、ailed: Excepting True"self.result_note = " %sError: %sn " % (self.result_note, noteelse:print " ->OK"self.resulte_note = "%s OKn" % self.result_noteself.assertTrue(arg1defassertLogFalse(self, arg1, note="":print "assertLogFalse("+str(arg1+&qu
7、ot;: "+noteif arg1 is True:print " ->FAILED: Expecting False."self.anyfailure = Trueself.result_note = "%sError: %sn" % (self.result_note, noteelse:self.result_note = "%sOKn" % self.result_noteprint " ->OK"self.assertFalse(arg1自己新建一个类,继承 unittest ,然
8、后修改必要的一些方法,并添加部分方法,譬如设 置 testName 啊,设置标记值来标记 case 知否执行结束啊。这些都是可以根据自己喜好来加 入的方法。defsetTestName(self, tname:self.testname = tnamedefgetTestName(self:returnself.testnamedefsetCompleted(self:pleted = TruedefisCompleted(self:pleted对于 unittest 框架的修改就写这么多。对 selenium 的基本方法做一些小改动, 动机优化 unittest 框架一致, 只是为了让你的用
9、 例跑起来的时候更加让人理解。我们相当于在 selenium 的基本方法外面又封装了一层。下 面是部分方法示例:def open(self,url:self.sel.open(urldefGetValue(self, element:value = self.sel.get_value(elementself.assertLogTrue(True, "Value for element %s is %s" %(element, valuereturn valuedefisTextPresent(self, text:val = self.sel.is_text_presen
10、t(textifval is False:self.assertLogTrue(val, note="error occured *" + text +" not found"else:print 'present (%s,%s' % (text,valreturnvaldef Select(self, element, selection:ifself.isElementPresent(element:self.sel.select(element, selectiondef Check(self, element:ifself.isE
11、lementPresent(element:self.sel.check(elementdef Type(self, element, text:ifself.isElementPresent(element:self.sel.type(element, text测试数据分离,这个做的非常简单,就是把期望值和控件位置作为测试数据放入 xml 中。GWEBlink/spantext(="Web"WebGIMAGESlink/spantext(="Images"Imagesname 表示控件名字, type 为控件的类型, locator 表示控制位置, e
12、xpect_value表示期望值。读取 xml 的内容。 这段代码属于我现学现卖, 直接看了一下 python 对 xml 的支 持,然后自己捣鼓了一下就写出来了,可以获取自己需要的 xml 里面的数据。fromxml.dom import minidomclassPageData(:def _init_(self, page_name, file: = page_nameself.data = minidom.parse(fileself.xpth_dict = self.XML_Dict(defXML_Dict(self:xpath_dict = fori in self
13、.data.getElementsByTagName(:xpath_dictstr(i.childNodes1.firstChild.nodeValue = str(i.childNodes5.firstChild.nodeValue,str(i.childNodes7.firstChild.nodeValuereturnxpath_dictdefGetLocator(self, object_name:returnself.xpth_dictobject_name0defGetValue(self, object_name:returnself.xpth_dictobjec
14、t_name1最后,主程序里面,我们就能用下面的方式,执行我们本来已经设计好的案例。deftestAutoCompleteFunctionMouseMove(self:'''test the function of auto complete. case 2: when user move mouse to the suggestion, there will be a link '''self.initTest("testAutoCompleteFunctionMouseMove"self.open('GoogleH
15、omePage = data_parser.PageData("GoogleHomePage", self.data_fileself.Type(GoogleHomePage.GetLocator('SEARCHTEXT', 's'GoogleAutoComplete = data_parser.PageData("AutoCompleteCase", self.data_file self.isElementPresent(GoogleAutoComplete.GetLocator("SUGGESTIONFIE
16、LD"time.sleep(10self.MouseMove(GoogleAutoComplete.GetLocator("SUGGESTIONONEFORS"expect_text = "I'm Feeling Lucky »"self.assertLogTrue(self.isTextPresent(expect_text, "The text %s has been displayed" %expect_textself.MouseMove(GoogleAutoComplete.GetLocator("SUGGESTIONTWOFORS"time.sleep(10self.assertLogTrue(self.isTextPresent(e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 针织厂染色机操作制度
- 2025-2026学年教招小学音乐教学设计
- 2025-2026学年亡羊补牢教案小学英语
- 2025-2026学年写作作业教学设计
- 2025-2026学年尞拼音教学设计语文小学
- 青海警官职业学院《遥感原理与方法》2024-2025学年第二学期期末试卷
- 重庆城市科技学院《动物学实验》2024-2025学年第二学期期末试卷
- 郑州智能科技职业学院《林学专业外语》2024-2025学年第二学期期末试卷
- 人生感悟与职业规划
- 黑龙江林业职业技术学院《中学化学教学设计与实践MOOC》2024-2025学年第二学期期末试卷
- 智慧农业大数据平台技术解决方案
- 围术期急性心梗患者的麻醉管理
- GB/T 13750-2023振动沉拔桩机安全操作规程
- 建设工程前期工作咨询费收费计算表
- 铁路质量安全红线问题检查内容及标准
- 土地开发整理项目预算编制课件
- 兰亭集序 公开课比赛一等奖
- 中国政治思想史考试重点
- 初中生物-绿色植物的呼吸作用教学设计学情分析教材分析课后反思
- 收入专项审计报告收入专项审计报告八篇
- 建筑施工特种作业人员体检表
评论
0/150
提交评论