联教-测试部-[web自动化]-培训3-unittest框架.docx

上传人:11****ws 文档编号:2285587 上传时间:2019-05-05 格式:DOCX 页数:45 大小:1.79MB
下载 相关 举报
联教-测试部-[web自动化]-培训3-unittest框架.docx_第1页
第1页 / 共45页
联教-测试部-[web自动化]-培训3-unittest框架.docx_第2页
第2页 / 共45页
联教-测试部-[web自动化]-培训3-unittest框架.docx_第3页
第3页 / 共45页
联教-测试部-[web自动化]-培训3-unittest框架.docx_第4页
第4页 / 共45页
联教-测试部-[web自动化]-培训3-unittest框架.docx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、联教/测试部 WEB 自动化测试培训 3WEB自动化测试培训 32016/06/03课程讲师肖能尤课程目的熟悉和掌握 Unittest单元测试框架课程内容1 Unittest单元测试框架介绍unittest是python的单元测试框架, 在python的官方文档中,对unittest有详细的介绍,想更深一步研究的同学可以到https:/www.python.org/doc/去了解,当然,我这里也会接介绍的。unittest单元测试提供了创建测试用例,测试套件以及批量执行的方案,unittest在安装pyhton以后就直接自带了,直接import unittest就可以使用。作为单元测试的框架,

2、unittest也是可以对程序最小模块的一种敏捷化的测试。在自动化测试中,我们虽然不需要做白盒测试,但是必须需要知道所使用语言的单元测试框架,这是因为把selenium2的API全部学习完后,就会遇到用例的组织问题,虽然函数式编程和面向对象编程提供了对代码的重构,但是对于所编写的每个测试用例,总不能编写成一个函数(方法)来调用执行吧?很显然,这是不明智的作法。利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每个case看成是一个最小的单元,由测试容器组织起来,到时候直接执行,同时引入测试报告(这是一直所期望的),对于unittest部分,下面详细的依次介绍。

3、unittest各组件的关系为: 联教/测试部 WEB 自动化测试培训 3T e s t C a s eT e s t F i x t u r e ( 测试固件 )T e s t S u i t e ( 测试套件 ) T e s t R u n n e r ( 执行测试 )T e s t R e p o r t ( 基于 h t m l 的测试报告 )1.1 unittest模块实战unittest支持测试的自动化处理,也同时包含测试的初始化和结束测试,以及把测试用例按模块化封装成一个测试套件,来进行批量的处理。在一个模块化的测试用例中,包含共同的代码,如公司教务网的登录的测试用例,都得先打开

4、浏览器访问项目地址,执行测试用例完成后,关闭浏览器结束测试,一般开始使用“setUp”表示,结束使用“tearDown”,setUp和tearDown被称为测试固件。在测试执行的时候,setUp首先被执行,而且仅会执行一次,这个方法执行通过后,不管后面的测试是否通过,都会执行tearDown来结束测试。在unittest中,提供了TestRunner来为运行测试,该类对象提供了run方法,其中接受TestCase或者TestSuite参数,并且返回测试结果,一般经常使用的是TextTestRunner运行器,可以看成是测试容器。下面写以教务网的登陆例子来验证登陆这个用例是否登陆成功来说明备注:

5、切记在unittest中,测试用例必须以test开头。实现的代码:联教/测试部 WEB 自动化测试培训 3代码:# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.support.ui import Selectimport unittest, time, reclass Login(unittest.TestCase):def setUp(self):self.driver = webdriver.Firefox()self.driver.implicitly_wait(30)self.ba

6、se_url = “http:/192.168.30.180/Uet-Uechn/“def test_login(self): check login success or faildriver = self.driverdriver.get(self.base_url)driver.find_element_by_id(“txtUserName“).clear()driver.find_element_by_id(“txtUserName“).send_keys(“18634564149“)联教/测试部 WEB 自动化测试培训 3driver.find_element_by_id(“txtP

7、assword“).clear()driver.find_element_by_id(“txtPassword“).send_keys(“123123“)time.sleep(2)driver.find_element_by_link_text(u“登录“).click()time.sleep(1)def tearDown(self):self.driver.quit()if _name_ = “_main_“:unittest.main(verbosity=2)运行结果:联教/测试部 WEB 自动化测试培训 3脚本讲解:我们来详细的介绍下如上的代码和输出结果,导入了unittest,创建了测

8、试的类(测试模块名称),继承TestCase,在测试固件中分别写的测试时候的初始化和测试结束后资源释放的代码,中间test_login是测试用例,也就是自动化的测试用例,在主函数中,直接调用main(),在main中加入verbosity=2,这样测试的结果就会显示的更加详细。这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功801 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”2 (详细模式):测试结果会显示每个测试用例的所有相关

9、的信息在编写的每个case中,可以加注释,这样在测试结果中,我们就知道该case是测试那个功能的,如上的截图,依据测试结果,我们就知道第一个testcase是测试登陆的。1.2 构建测试套件在1.1介绍测试模块的时候,借助unittest测试框架编写了一个简单的case,在节中,来介绍怎么构建测试套件,测试套件顾名思义就是测试用例的容器。 在说明测试套件的时候,以老师平板的项目为案例,来说明测试套件在项目中的实际应用。新建testCase的package,在package中创建test_a1_login 登陆模块和test_a10_safe_custody 安全监护模块等,见目录结构联教/测试

10、部 WEB 自动化测试培训 3test_a10_safe_custody模块代码:#coding:utf-8from appium import webdriverfrom selenium import webdriverfrom time import sleepfrom mon.by import Byimport unittest,syssys.path.append(./page)from page.baseTestCase import AppTestCase#安全监护class Safe_custody(AppTestCase):def test_a1_Safe_custody(

11、self):首页-安全监护 self.driver.find_element(By.NAME,u安全监护).click()self.wait 联教/测试部 WEB 自动化测试培训 3def test_a2_Safe_custody_bottom(self):点击安全监护-讲台-底部self.driver.find_element(By.NAME,u安全监护).click()self.waitself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_reverse“).click()self.waitdef test_a3_Saf

12、e_custody_top(self):点击安全监护-讲台-底部-顶部self.driver.find_element(By.NAME,u安全监护).click()self.waitself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_reverse“).click()self.waitself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_obverse“).click()self.waitif _name_=_main_:unittest.main(ve

13、rbosity=2)# 联教/测试部 WEB 自动化测试培训 3# #构造测试集# suite = unittest.TestSuite() # suite.addTest(Safe_custody(“test_a3_Safe_custody_top“)# # # 执行测试# runner = unittest.TextTestRunner()# runner.run(suite)1.2.1 addTest的应用当有多个或者几百测试用例的时候,这样就需要一个测试容器(测试套件),把测试用例放在该容器中进行执行,unittest模块中提供了TestSuite类来生成测试套件,使用该类的构造函数可

14、以生成一个测试套件的实例,该类提供了addTest来把每个测试用例加入到测试套件中。在weke模块中编写了测试使用到的方法,下来我们test_a10_safe_custody模块中编写几个测试用例,以实例的方式来说明addTest的应用,见wekeTest模块中的代码和执行结果截图:代码:#coding:utf-8from appium import webdriver联教/测试部 WEB 自动化测试培训 3from selenium import webdriverfrom time import sleepfrom mon.by import Byimport unittest,syssy

15、s.path.append(./page)from page.baseTestCase import AppTestCase#安全监护class Safe_custody(AppTestCase):def test_a1_Safe_custody(self):首页-安全监护 self.driver.find_element(By.NAME,u安全监护).click()self.wait def test_a2_Safe_custody_bottom(self):点击安全监护-讲台-底部self.driver.find_element(By.NAME,u安全监护).click()self.wai

16、tself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_reverse“).click()self.waitdef test_a3_Safe_custody_top(self):点击安全监护-讲台-底部-顶部联教/测试部 WEB 自动化测试培训 3self.driver.find_element(By.NAME,u安全监护).click()self.waitself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_reverse“).click()self.w

17、aitself.driver.find_element(By.ID,“com.uet.teacherspad:id/rdobtn_obverse“).click()self.waitif _name_=_main_:#构造测试集suite = unittest.TestSuite() suite.addTest(Safe_custody(“test_a1_Safe_custody“)suite.addTest(Safe_custody(“test_a2_Safe_custody_bottom“)suite.addTest(Safe_custody(“test_a3_Safe_custody_top“)# 执行测试runner = unittest.TextTestRunner(verbosity=2)runner.run(suite)运行结果:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。