unittest 单元测试
unittest 单元测试:
1,单元测试是指对软件中最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来讲,要根据实际情况去判定其具体含义。
2,unitest=TestCase + TestResult 执行 + 结果
3,首先使用import unitest
4,测试的类都是继承于TestCase类
5, setUp()测试前的初始化工作;tearDown()测试后的清除工作(在每个测试方法运行时被调用)
注意:
1,所有类中方法入参为self,定义方法的变量也要“self.变量”(熟悉python的写法其实就是类变量的调用)
2,定义测试用例,以“test”开头命名的方法,方法的入参为self
3,unitest.main()方法会搜索该模块下所有的以test开头的测试用例方法,并且自动执行它们
4,成功会输出,失败是F
先看一个例子:
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/7 21:15'import unittestclass UserTestCase(unittest.TestCase):def setUp(self):print("--setup--")def tearDown(self):print("--tearDown--")def test_name(self):print('--name--')if __name__ == '__main__':unittest.main()
运行的结果为:
. --setup-- ---------------------------------------------------------------------- --name-- Ran 1 test in 0.000s --tearDown--OK
可以看到的顺序是先执行setup方法之后,再去执行自定义的测试方法,最终使用tearDown来进行收尾
再看补充,因为在unitest中必须以test_开头来定义方法,因此新增几个方法。
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/7 21:15'import unittestclass UserTestCase(unittest.TestCase):def setUp(self):print("--setup--")def tearDown(self):print("--tearDown--")def test_name(self):print('--name--')def test_isupper(self):print('--upper')def test_age(self):print('--age')if __name__ == '__main__':unittest.main()
执行的结果为:
--setup-- ... --age ---------------------------------------------------------------------- --tearDown-- Ran 3 tests in 0.000s --setup----upper OK --tearDown-- --setup-- --name-- --tearDown--
也就是说,每一个自定义方法开始会调用setup,然后调用自定义方法,然后调用tearDown方法
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/7 21:15'import unittestclass UserTestCase(unittest.TestCase):def setUp(self):print("--setup--")def tearDown(self):print("--tearDown--")def test_name(self):self.assertEqual('foo'.upper(), "FoO", msg='转换不对') # msg=是报错之后的提示信息print('--name--')def test_isupper(self):print('--upper')def test_age(self):print('--age')if __name__ == '__main__':unittest.main()
结果如下:
--setup-- ..F --age ====================================================================== --tearDown-- FAIL: test_name (__main__.UserTestCase) --setup-- ---------------------------------------------------------------------- --upper Traceback (most recent call last): --tearDown--File "C:/Users/lenovo/Desktop/新建文件夹/自动化测试selenium/unitest_import.py", line 16, in test_name --setup--self.assertEqual('foo'.upper(), "FoO", msg='转换不对') # msg=是报错之后的提示信息 --tearDown-- AssertionError: 'FOO' != 'FoO' - FOO ? ^ + FoO ? ^: 转换不对---------------------------------------------------------------------- Ran 3 tests in 0.000sFAILED (failures=1)
三个test失败1个,报错信息为转换不对,总体结论为..F
测试套件TestSuite介绍:
需求:
1,利用unitest执行流程测试而非单元测试
2,控制unitest的执行顺序
① unitest.TestSuite()类来表示一个测试用例集
1,用来确定测试用例的执行顺序,决定先后执行
2,如果一个class中有四个test开头的方法,则加载到suite中则有四个测试用例
3, 由TestLoder加载TestCase到TestSuite
4, verbosity参数可以控制执行结果的输出, 0是简单报告,1是一般报告, 2是详细报告
默认1 会在每个成功的用例前面有个“.”每个失败用例前面有个“F”
② TextTestRunner() 文本测试用例运行器
③ run()方法是运行测试套件的测试用例,入参为suite测试套件
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/10 21:37'import unittestclass UserTestCase(unittest.TestCase):def setUp(self):self.age = 25self.name = "呦西,开始了"print('setup method------')def tearDown(self):print("--tearDown method------")def test_one(self):print("test_one 周先生来了")self.assertEqual(self.name, "呦西,开始了", msg="口令不对!")def test_two(self):print('test_two')self.assertFalse("ZL".isupper(), msg="不是大写")def test_three(self):print('test_three')self.assertEqual(self.age, 25)def test_four(self):print('test_four')self.assertEqual(self.age, 25)if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(UserTestCase("test_one")) # 测试类名加方法# verbosity参数可以控制执行结果的输出, 0是简单报告,1是一般报告, 2是详细报告 默认1 会在每个成功的用例前面有个“.”每个失败用例前面有个“F”runner = unittest.TextTestRunner(verbosity=0)runner.run(suite)
运行结果如下:
setup method------ ---------------------------------------------------------------------- Ran 1 test in 0.000s test_one 周先生来了--tearDown method------ OK
如果增加多个呢?
suite.addTest(UserTestCase("test_four"))suite.addTest(UserTestCase("test_two"))suite.addTest(UserTestCase("test_three"))
注意顺序,这个是指定的顺序添加之后,结果如下:
setup method------ test_one 周先生来了 --tearDown method------ setup method------ test_four --tearDown method------ setup method------ test_two --tearDown method------ setup method------ test_three --tearDown method------ ---------------------------------------------------------------------- Ran 4 tests in 0.001sOK
完整代码如下:
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/10 21:37'import unittestclass UserTestCase(unittest.TestCase):def setUp(self):self.age = 25self.name = "呦西,开始了"print('setup method------')def tearDown(self):print("--tearDown method------")def test_one(self):print("test_one 周先生来了")self.assertEqual(self.name, "呦西,开始了", msg="口令不对!")def test_two(self):print('test_two')self.assertFalse("zl".isupper(), msg="不是大写")def test_three(self):print('test_three')self.assertEqual(self.age, 25)def test_four(self):print('test_four')self.assertEqual(self.age, 25)if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(UserTestCase("test_one")) # 测试类名加方法suite.addTest(UserTestCase("test_four"))suite.addTest(UserTestCase("test_two"))suite.addTest(UserTestCase("test_three"))# verbosity参数可以控制执行结果的输出, 0是简单报告,1是一般报告, 2是详细报告 默认1 会在每个成功的用例前面有个“.”每个失败用例前面有个“F”runner = unittest.TextTestRunner(verbosity=2)runner.run(suite)
转载于:https://www.cnblogs.com/zhoulixiansen/p/9926097.html
unittest 单元测试相关推荐
- python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- python单元测试框架-Python unittest单元测试框架总结
什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入 ...
- python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- unittest单元测试框架总结
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- unittest单元测试简单介绍
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- python单元测试框架unittest介绍和使用_Python+Selenium框架设计篇之-简单介绍unittest单元测试框架...
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unittest是一 ...
- unittest单元测试笔记
单元测试 unittest单元测试是基于java的JUnit思想框架开发出来的测试框架 import unittest import HTMLTestRunner class Mytest1(unit ...
- python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解
python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...
- Python接口自动化之unittest单元测试
------·今天距2021年251天·------ 这是ITester软件测试小栈第115次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之requests请求封装,主要通 ...
最新文章
- JVM运行时数据区---堆(堆内存)
- 树莓内核驱动io框架
- Windows 10 周年更新后TPM的一个bug?
- python编写的程序大全_Python开发技术大全
- 用PHP做负载均衡指南
- 求2个数的最大公约数
- x3-02 java,Android Studio 3.2.1 - 新项目无法运行
- opencv官网下不了了,分享各版本
- 编程常用资料/网站收集
- 轻型机械臂模块关节机械设计方案
- Microservices 基础理论
- MySQL菜鸟学习日志——0001
- itsm软件_itsm软件的主要功能
- 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
- 声音大小与振幅的关系_物理知识问答-响度与振幅的关系是什么?
- 项目资源管理-日历图
- VMware安装Redhat虚拟机步骤
- GPS 卫星的信号结构
- workbook需要引入的包_解决Maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题
- 国内和海外做游戏运营会有哪些不同?
热门文章
- 计算机GUI设计报告,GUI 程序设计实验报告.doc
- @excel 注解_SpringBoot中关于Excel的导入和导出
- matlab 灰度化原理公式,MATLAB的Sobel图像边缘灰度值检测算法的详细公式和实现资料概述...
- python根据方程的y求x_用Python解方程
- node mysql sequlize_初步使用Sequelize模块 - Node实战
- latex转为html效果好吗,latex转HTML
- 一个纸水杯的测试用例设计。
- 简单实现ToolStripMenuItem(菜单栏)的单选效果
- LA3027(并查集)
- Head First SQL Your Brain on SQL读书笔记