python+unittest框架第三天unittest之分离测试固件和公共代码,跳过案例的执行
我们在时间工作中,会将整个项目的代码分别放置多个模块中去编写。方便后期项目维护,比如,我们的web项目可能有多个IP地址,每个IP地址代表不同的测试环境。测试环境与Bat环境或者验收环境等。这就需要我们频繁更换测试地址 ;或者我们需要验证web 项目在不同的浏览器上面的兼容性,需要我们更换浏览器测试,这样我们必须切换代码中的浏览器驱动。
我们可以将公共代码放在另一个.py文件中,就像这样:
我们将测试固件分离出去,这样方便我们在公共模块下维护测试需要的初始化环境,方便切换浏览器或者更改地址
import unittest #导入unittest库
from selenium import webdriver #导入selenium中的webdriver浏览器驱动
import time as t class public_baidu(unittest.TestCase): #我们写的测试固件类,里面有初始化方法setup()和tearDown()
@classmethod # 使用 @classmethod 装饰器函数,把方法变成类方法,可以直接调用方法,类本身就不在需要实例化类对象就可以调用此方法
def setUp(cls):
cls.driver = webdriver.Chrome() #比如切换其他浏览器,我们都可以在这里更改
cls.driver.maximize_window()
cls.driver.implicitly_wait(15)
cls.driver.get(r'http://www.baidu.com') #比如我们的测试地址有好几套,我们可以直接在这里跟换地址
t.sleep(2) @classmethod
def tearDown(cls):
cls.driver.quit()
name我们在另一个.py模块中肯定是主要存放测试案例,我们看下代码:
import unittest #导入unittest
from bokeyuan.bokeyuan_public import * #注意这是我们自己创建的模块 .py文件,该模有公共代码 class page_baidu_sousuo(public_baidu): #定义一个类,并继承我们写的公共模块文件里面的public_baidu类 '''以下案例是测试百度首页链接'''
def test_baidu_001(self): #案例001 测试进入百度新闻界面
'''测试百度首新闻链接'''
self.driver.find_element_by_link_text('新闻').click() #点击百度页面,超链接【新闻】两个字
t.sleep(2) #设置强制等待2秒,就是必须等待,用导入的time中的sleep方法,不是全局性,哪里需要设置到哪里,局部的
self.driver.back() def test_baidu_002(self): #案例002 测试进入百度地图界面
'''测试百度首地图链接'''
self.driver.find_element_by_link_text('地图').click() ##点击百度页面,超链接【地图】两个字
t.sleep(2)
self.driver.back() '''以下案例是测试百度首页搜索功能'''
def test_baidu_003(self):
'''测试百度首页搜索功能'''
self.driver.find_element_by_id('kw').send_keys('你好朋友')
t.sleep(2) @staticmethod #静态方法分离测试套件,不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。类.方法().看最后的代码调用:page_baidu_lianjie.suite()
def suite():
suite = unittest.TestSuite(unittest.makeSuite(page_baidu_sousuo)) #将测试套件单独分离出,封装成方法,直接调用,以后就不用再每次都写
return suite #将测试套件返回,如果不写return返回,那么将不会将内容返回给调用方下面的run() if __name__ =='__main__':
unittest.TextTestRunner(verbosity=2).run(page_baidu_sousuo.suite()) #run()接收封装的测试套件suite()方法的返回参数,进行测试套件的执行载入,然后生成报告
这样我们就可以试试两个文件维护后进行执行了:

比如今天发现有一条案例最近需求被推翻了,我们在需求没有拍板的时候,我们可以跳过该条案例的执行,注释代码是一种方法,但是并不是很友好,我们看下unittest提供的skip()方法 :
注意,如果你单独复制代码是不行的,需要把案例一里面的公共模块也赋值走哦!!!
import unittest #导入unittest
from bokeyuan.bokeyuan_public import * #注意这是我们自己创建的模块 .py文件,该模有公共代码 class page_baidu_sousuo(public_baidu): #定义一个类,并继承我们写的公共模块文件里面的public_baidu类 '''以下案例是测试百度首页链接'''
def test_baidu_001(self): #案例001 测试进入百度新闻界面
'''测试百度首新闻链接'''
self.driver.find_element_by_link_text('新闻').click() #点击百度页面,超链接【新闻】两个字
t.sleep(2) #设置强制等待2秒,就是必须等待,用导入的time中的sleep方法,不是全局性,哪里需要设置到哪里,局部的
self.driver.back() @unittest.skip('地图链接,正在更改昨天的bug,今天先不执行') #用unittest提供的skip()方法,跳过测试案例,执行下一条案例
def test_baidu_002(self): #案例002 测试进入百度地图界面
'''测试百度首地图链接'''
self.driver.find_element_by_link_text('地图').click() ##点击百度页面,超链接【地图】两个字
t.sleep(2)
self.driver.back() '''以下案例是测试百度首页搜索功能'''
def test_baidu_003(self):
'''测试百度首页搜索功能'''
self.driver.find_element_by_id('kw').send_keys('你好朋友')
t.sleep(2) @staticmethod #静态方法分离测试套件,不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。类.方法().看最后的代码调用:page_baidu_lianjie.suite()
def suite():
suite = unittest.TestSuite(unittest.makeSuite(page_baidu_sousuo)) #将测试套件单独分离出,封装成方法,直接调用,以后就不用再每次都写
return suite #将测试套件返回,如果不写return返回,那么将不会将内容返回给调用方下面的run() if __name__ =='__main__':
unittest.TextTestRunner(verbosity=2).run(page_baidu_sousuo.suite()) #run()接收封装的测试套件suite()方法的返回参数,进行测试套件的执行载入,然后生成报告

今天的东西不太多,明天开始笔记断言的部分。
总结今天的知识:
1、 分离测试固件,将公共部分放在另一.py文件模块中,方便后期维护
2、 利用unittest中的skip()方法忽略不需要执行的案例
来自子努力学习的新手,有错误的地方,请帮忙指点。有不理解的小伙伴,可以直接留言哦。一起学习,希望我的笔记对你也有帮助~
python+unittest框架第三天unittest之分离测试固件和公共代码,跳过案例的执行的更多相关文章
- unittest框架(三)unittest+yaml数据驱动
学习完了如何用yaml文件管理用例,如何进行单元测试,如何产生漂亮的测试报告,那么结合这几点,我们简单学习下unittest+yaml数据驱动来测试. 第一步:首先,我们建一个yaml文件,管理用例, ...
- python+unittest框架第四天unittest之断言(一)
unittest中的测试断言分两天总结,hhh其实内容不多,就是懒~ 断言的作用是什么? 答:设置测试断言以后,能帮助我们判断测试用例执行结果. 我们先看下unittest支持的断言有哪些: 对上面 ...
- python+unittest框架第四天unittest之批量执行案例
今天开始批量执行用例~,场景是这样的: 工作中我们可能有多个模块文件(.py)这些文件根据不同的业务类型或功能,测试案例分布在不同的模块文件下.前面的小示例中,我们的测试用例都是在一个文件中,直接运行 ...
- pycharm 右键无法显示unittest框架&&解决右键只有unittest 运行如何取消右键显示进行普通run
上面是普通文件和unittest 导入的文件右键快捷键显示情况,可以看出两者快捷键都是ctr+shift+F10,如果你是右键模式想运行unitest,但是又不知道哪里配置unittest直接运行快捷 ...
- unittest系列(三)unittest用例如何执行
在前面的分享中,我们分别讲了unittest的相关流程以及相关断言,那么很多人,都会问了unittest的用例,应该如何执行呢,这次,我们就来看看,unittest用例如何执行.首先,我们可以使用py ...
- python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...
- python flask框架学习(三)——豆瓣微信小程序案例(一)templates的使用,宏的使用,前端后台传数据,前端写python语句
目录 一.templates的使用 (1)在templates里创建一个index.html (2)再在app.py里写 (3)展示效果 二.构建第一个电影评分 (1)准备好素材放进static里的i ...
- python网络爬虫(三)requests库的13个控制访问参数及简单案例
酱酱~小编又来啦~
- Python单元测试框架unittest之深入学习
前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...
随机推荐
- 2019ICPC南京自我反省
第一场ICPC,跟第一场CCPC一样,可惜真的可惜. 打完比赛就感觉难受,难受不在于又抱了块铜牌,而是那种能出的题没出的可惜感非常浓重. 开场还是可以的,通过一阵讨论,就大胆猜测了A的规律,然后一发过 ...
- macOs下安装Android SDK
首先下载 Android SDK for mac 配置安装 1.进入存放 android-sdk-macosx 的目录,然后输入./android sdk就可以调出SDK Manager的图形界面 A ...
- 前端武器库系列之html后台管理页面布局
设计网页,让网页好看:网上找模板 搜 HTML模板 BootStrap 一.页面布局之主站页面 主站布局一般不占满页面,分为菜单栏.主页面.底部 上中下三部分.伪代码如下: <div class ...
- 搜索sqlserver 存储过程中的关键字
搜索sqlserver 存储过程中的关键字 select * from sys.all_sql_modules where definition like '%SP_NAME%'
- 详解css3 pointer-events(阻止hover、active、onclick等触发事件来
pointer-events 更像是JavaScript,它能够: 阻止用户的点击动作产生任何效果 阻止缺省鼠标指针的显示 阻止CSS里的 hover 和 active 状态的变化触发事件 阻止Jav ...
- BeanFactory 简介以及它 和FactoryBean的区别
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- 20175234 2018-2019-2 《Java程序设计》第十周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第十周学习总结 教材学习内容总结 12.1进程与线程 12.2 Java中的线程 12.3 Thread类与线程的创建 ...
- [Andorid] 通过JNI实现kernel与app进行spi通讯
CPU:RK3399 系统:Android 7.1 人脸识别的要求越来越高,因此主板增加了 SE 加密芯片,加密芯片通过 spi 接口与 CPU 通讯. 对于 kernel 层的代码,Linux 原始 ...
- createElement与createDocumentFragment的一些小区别
在DOM操作里,createElement是创建一个新的节点,createDocumentFragment是创建一个文档片段. 网上可以搜到的大部分都是说使用createDocumentFragmen ...
- java 获取String中的数字
随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...