GraphQL installation shiny notifications ip vue论坛 vue router vue响应式布局 matlab中log函数 grep不是内部命令 删除数组第一个元素 pythoninput python基础教程 python安装 python文件 python中的循环 python自学入门 java开发环境安装 java入门课程 java框架学习 php整站源码 rewritebase sql行转列 微信超级好友 beatedit dg分区 圆形截图 vue上传文件 心理学与生活pdf 脚本 摩斯密码在线翻译 firefox绿色版 勇敢者的游戏3 winsxs可以删除吗 影音先锋下载速度慢 软碟通u盘装系统教程 ipad内存怎么清理 idea下载 ps测量长度 prayaya
当前位置: 首页 > 学习教程  > 编程语言

高阶测试人必须会的Selenium-Unittest单元测试框架

2020/9/19 13:40:35 文章标签:

1、Unittest介绍

为什么要学习单元测试框架
测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结果的对比==测试结果
单元测试框架提供了丰富的日志:给出测试用例失败与通过的数目及执行失败的原因
常见的单元测试框架有哪些
Doctest、unittest、pytest、nose等等
Java–》junit(testng)、C+±-》 googleTest、c#–》nunit

2、Unittest核心组件

在这里插入图片描述

3、Unittest工作原理

Testcase:一个 testcase 就是一个测试用例。Setup(测试环境的准备)、run(测试执行)、teardown(测试环境的还原)。
Testsuite(集合或套件):多个测试用例的集合就是 suite,一个suite可以包含多个测试用例,也可以嵌套 suite。
TestLoader:用来加载 testcase到testsuite 中的。
TestTestRunner:用例执行测试用例(run 方法),测试结果会保存在 TestTestresult 中。
fixture:一个测试用例环境的搭建和销毁。
在这里插入图片描述

4、Unittest单元测试用例的组织

构建单元测试用例
场景:以字符串替换举例
在这里插入图片描述
在这里插入图片描述

5、构建测试套件(优化测试用例)

单元测试用例的增多,在各个测试代码中会有很多相似的操作,考虑setUp(测试环境的准备)、tearDown(测试环境的还原)

在这里插入图片描述
在这里插入图片描述

6、组织多个测试用例(深度优化测试用例)

测试用例的继续优化:所有的测试用例不需要都用单独的类进行存放,该方式比较耗时,通过test开头的函数来存放测试用例。

在这里插入图片描述在这里插入图片描述

7、构建测试套件

多个测试用例的集合就是suite,一个suite可以包含多个测试用例,也可以嵌套suite。
在这里插入图片描述

8、测试套件优化

执行部分测试用例

在这里插入图片描述 执行某测试类下的全部测试用例,unittest模块中提供一个makesuite
在这里插入图片描述

9、多个测试类的控制

在这里插入图片描述在这里插入图片描述

10、执行测试

首先将StringReplaceTestCase放在单独的一个py文件中StringReplace.py
将注释放在方法内,作为方法的说明。
执行部分测试用例,创建一个test_suite.py,用户控制措施用例的执行
运行全部测试用例。

11、测试用例的跳过

修改StringReplace文件,理解skip、skipif、skipunless
在这里插入图片描述

12、Unittest框架总结

unittest.TestCase:TestCase类,所有测试用例类继承的基本类。class Test(unittest.TestCase):

unittest.main():使用可以方便的将一个单元测试模块变为可直接运 行的测试脚本

unittest.TestSuite():unittest框架的TestSuite()类是用来创建 测试套件的。

unittest.TextTestRunner():unittest框架的TextTestRunner()类, 通过该类下面的run()方法来运行suite所组装的测试用例,入参为 suite测试套件。

unittest.skip():装饰器,当运行用例时,有些用例可能不想执行,可用装饰器 暂时屏蔽该条测试用例。常见的用法如想调试某一测试用例,可先屏蔽其他用例

@unittest.skip(reason): skip(reason)装饰器:无条件跳过装饰的测试,并说 明跳过测试的原因。

@unittest.skipIf(reason): skipIf(condition,reason)装饰器:条件为真时, 跳过装饰的测试,并说明跳过测试的原因。

@unittest.skipUnless(reason): skipUnless(condition,reason)装饰器:条件 为假时,跳过装饰的测试,并说明跳过测试的原因

setUp()方法用于测试用例执行前的初始化工作。如测试用 例中需要访问浏览器,可以在setUp中实例化浏览器驱动。
tearDown():tearDown()方法用于测试用例执行之后的善后工作、关 闭浏览器。
断言方法:在执行测试用例的过程中,最终用例是否执行通过,是通 过判断测试得到的实际结果和预期结果是否相等决定的。

assertEqual(a,b,[msg=‘测试失败时打印的信息’]):断言a和b是否相等,相等则测试用例通 过。

assertNotEqual(a,b,[msg=‘测试失败时打印的信息’]):断言a和b是否相等,不相等则测试 用例通过。

assertTrue(x,[msg=‘测试失败时打印的信息’]):断言x是否True,是True则测试用例通过。

addTest(): 方法是将测试用例添加到测试套件中。

在这里插入图片描述run(): 方法是运行测试套件的测试用例,入参为suite测试套件
在这里插入图片描述

13、HTML报告介绍

HTMLTestRunner是Python的标准库unittest单元测试框架的一个扩 展,用于生成HTML测试报告

在这里插入图片描述

14、HTML测试结果

HTMLTestRunner.py下载地址http://tungwaiyip.info/software/HTMLTestRunner.html
HTMLTestRunner.py的存放路径,是放在C:\Users\Administrator\AppData\Local\Programs\Python37\Lib
HTMLTestRunner.py是基于python2*开发的,要想能够在python3上使用,需要修改该文件。
修改汇总:
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第766行,将uo = o.decode(‘latin-1’)修改成uo = e
第772行,将ue = e.decode(‘latin-1’)修改成ue = e
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))

基于test_suite文件进行HTML报告生成,存放到D盘名为result.html

在这里插入图片描述在这里插入图片描述点赞关注~持续分享,加入我们,642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。


本文链接: http://www.dtmao.cc/news_show_200047.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?