概述

1.测试脚手架(test fixture)

测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown().

2.测试案例(test case)

最小的测试单元.

3.测试套件(test suite)

测试案例的集合.

4.测试运行器(test runner)

测试执行的组件.

命令行接口

可以用命令行运行测试模块,测试类以及测试方法.

python -m unittest test_module1 test_module2

python -m unittest test_module.TestClass

python -m unittest test_module.TestClass.test_method

可加-v打印详细信息

python -m unittest -v test_module

测试案例自动搜索

unittest支持简单的test discovery. 命令行传入discovery后,框架会自动在当前目录搜索要测试的案例并执行.搜索目录必须是包或者模块.基本使用如下:

cd project_directory

python -m unittest discover

子选项如下:

-v, –verbose

输出信息的详细级别

-s, –start-directory directory

开始搜索目录 (默认为当前目录)

-p, –pattern pattern

匹配的文件名 (默认为test*.py)

-t, –top-level-directory directory

搜索的顶层目录 (默认为start directory)

创建测试代码

1.方式一

创建子类继承unittest.TestCase,然后重写以下方法

class WidgetTestCase(unittest.TestCase):

def setUp(self):

pass

def runTest(self):

pass

def tearDown(self):

pass

运行

2.方式二

编写以test开头的方法

class WidgetTestCase(unittest.TestCase):

def setUp(self):

pass

def test_xx1(self)

def test_xx2(self)

...

def test_xxN(self)

def tearDown(self):

pass

构建测试套件

方式一

widgetTestSuite = unittest.TestSuite()

widgetTestSuite.addTest(WidgetTestCase('test_default_size'))

widgetTestSuite.addTest(WidgetTestCase('test_resize'))

方式二(推荐)

def suite():

suite = unittest.TestSuite()

suite.addTest(WidgetTestCase('test_default_size'))

suite.addTest(WidgetTestCase('test_resize'))

return suite

方式三(推荐)

def suite():

tests = ['test_default_size', 'test_resize']

return unittest.TestSuite(map(WidgetTestCase, tests))

方式四

多个测试套件构建成更大的测试套件

suite1 = module1.TheTestSuite()

suite2 = module2.TheTestSuite()

alltests = unittest.TestSuite([suite1, suite2])

方式五

unittest的TestLoader提供生成默认的测试套件

suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)

忽略测试案例( Python2.7支持)

可以分无条件忽略和有条件忽略,通过装饰器实现

class MyTestCase(unittest.TestCase):

@unittest.skip("demonstrating skipping")

def test_nothing(self):

self.fail("shouldn't happen")

@unittest.skipIf(mylib.__version__ < (1, 3),

"not supported in this library version")

def test_format(self):

# Tests that work for only a certain version of the library.

pass

@unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")

def test_windows_support(self):

# windows specific testing code

pass

测试类也可以忽略

@unittest.skip("showing class skipping")

class MySkippedTestCase(unittest.TestCase):

def test_not_run(self):

pass

python单元测试教程_Python单元测试框架unittest使用方法讲解相关推荐

  1. python单元测试教程_python单元测试unittest 输出测试报告HTMLTestRunner

    建立unittest步骤: 1.先导入模块unittest及要测试的函数 2.再创建一个继承unittest.TestCase的类,类命名要包含Test 3.在类中创建一个方法,命名为test_开头 ...

  2. python xlutils教程_python xlutils复制表格使用方法

    介绍 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.B ...

  3. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  4. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  5. python语言案例教程单元测试答案_Python单元测试框架(附例子)

    什么是单元测试? 单元测试在[Python中做是为了在应用程序的开发阶段的早期识别错误时的错误不太经常和修复成本更低. 单元测试是用Python设计的脚本化代码级测试,用于验证功能的小"单元 ...

  6. python api开发框架_python api框架

    python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...

  7. python教程是什么-Python基础教程_Python入门知识

    Python基础教程频道为编程初学者提供入门前的所有基础知识,必须要掌握的一些PYTHON基础语法语句,基本的数据类型. 让大家可以更快速.更容易理解的的方式掌握Python编程所需要的基础知识,灵活 ...

  8. python继承编程教程_Python实现通过继承覆盖方法示例

    本文实例讲述了Python实现通过继承覆盖方法.分享给大家供大家参考,具体如下: Python真是太动态了,所有的方法默认都是虚的.子类定义父类同名函数之后,父类函数被覆盖. class P(obje ...

  9. python 3教程_Python 3 教程

    全屏 Python 3 教程 Python的3.0版本,常被称为Python 3000,或简称Py3k.相对于Python的早期版本,这是一个较大的升级.为了不带入过多的累赘,Python 3.0在设 ...

最新文章

  1. uva 10256 The Great Divide (Convex Hull, Simple)
  2. 死锁的产生、预防和避免
  3. nmap常用参数详解
  4. lucene 搜索学习笔记 - OK
  5. 多进程参数args元组方式与kwargs字典方式
  6. 机器学习项目实战----新闻分类任务(一)
  7. HTML:hr横线改变颜色
  8. UT源码+105032014036
  9. Review of Classic Clustering Algorithms
  10. 聚集索引与非聚集索引的区别
  11. LHC或许已经首次制造出顶夸克“四胞胎”
  12. 影响计算机性能的决定因素,影响cpu性能的因素有哪些
  13. ioncube加密与解密 php代码
  14. adb命令查看手机电池信息
  15. 北京五险一金介绍及公积金领取办法
  16. 电邮里面是图片怎么下载_这是最有效的采访后谢谢您的电子邮件
  17. 分类计数原理与分步计数原理_《分类加法计数原理与分步乘法计数原理》教学设计...
  18. Redis基本概念知识
  19. 什么是客户终身价值(LTV)
  20. 单片机烧录不进去怎么办?通用类!

热门文章

  1. 数据结构与算法之-----向量(Vector)
  2. 只能发邮件不能接受_《GTA5》R星发邮件问候玩家会发生什么?以下操作一个也别碰...
  3. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  4. mysql 8 多线程_mysql8 参考手册--通用线程状态
  5. Weka算法Classifier-meta-AdaBoostM1源代码分析(一)
  6. Mybatis foreach 使用与理解(支持Array,List,HashMap及相互嵌套)
  7. JAVA调用NuSoap服务
  8. CentOS6_mini_安装后基本配置
  9. windows7 系统盘 瘦身软件介绍: 冗余文件清理工具
  10. 征集企业非技术面试疑难问题