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 单元测试相关推荐

  1. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  2. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  3. python单元测试框架-Python unittest单元测试框架总结

    什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入 ...

  4. python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  5. unittest单元测试框架总结

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  6. unittest单元测试简单介绍

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  7. python单元测试框架unittest介绍和使用_Python+Selenium框架设计篇之-简单介绍unittest单元测试框架...

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unittest是一 ...

  8. unittest单元测试笔记

    单元测试 unittest单元测试是基于java的JUnit思想框架开发出来的测试框架 import unittest import HTMLTestRunner class Mytest1(unit ...

  9. python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解

    python中unittest模块是用来做单元测试的. unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the ...

  10. Python接口自动化之unittest单元测试

    ------·今天距2021年251天·------ 这是ITester软件测试小栈第115次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之requests请求封装,主要通 ...

最新文章

  1. JVM运行时数据区---堆(堆内存)
  2. 树莓内核驱动io框架
  3. Windows 10 周年更新后TPM的一个bug?
  4. python编写的程序大全_Python开发技术大全
  5. 用PHP做负载均衡指南
  6. 求2个数的最大公约数
  7. x3-02 java,Android Studio 3.2.1 - 新项目无法运行
  8. opencv官网下不了了,分享各版本
  9. 编程常用资料/网站收集
  10. 轻型机械臂模块关节机械设计方案
  11. Microservices 基础理论
  12. MySQL菜鸟学习日志——0001
  13. itsm软件_itsm软件的主要功能
  14. 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
  15. 声音大小与振幅的关系_物理知识问答-响度与振幅的关系是什么?
  16. 项目资源管理-日历图
  17. VMware安装Redhat虚拟机步骤
  18. GPS 卫星的信号结构
  19. workbook需要引入的包_解决Maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题
  20. 国内和海外做游戏运营会有哪些不同?

热门文章

  1. 计算机GUI设计报告,GUI 程序设计实验报告.doc
  2. @excel 注解_SpringBoot中关于Excel的导入和导出
  3. matlab 灰度化原理公式,MATLAB的Sobel图像边缘灰度值检测算法的详细公式和实现资料概述...
  4. python根据方程的y求x_用Python解方程
  5. node mysql sequlize_初步使用Sequelize模块 - Node实战
  6. latex转为html效果好吗,latex转HTML
  7. 一个纸水杯的测试用例设计。
  8. 简单实现ToolStripMenuItem(菜单栏)的单选效果
  9. LA3027(并查集)
  10. Head First SQL Your Brain on SQL读书笔记