今天是unittest最后一讲,我们解决一下如何只运行一次setUp和tearDown方法以及简单的数据驱动的知识。

1、只运行一次setUp和tearDown方法

很简单,只需要把setUp和tearDown分别替换为setUpClass和tearDownClass即可,但是用这两个方法必须加上 @classmethod 修饰


# coding: utf-8 import unittest
import time class MyTest(unittest.TestCase): @classmethod
def setUpClass(cls):
print "SetUp"
time.sleep(2) @classmethod
def tearDownClass(cls):
print "teardown"
time.sleep(2) def test01(self):
print "test01" def test03(self):
print "test03" def test02(self):
print "test02" if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
unittest.TextTestRunner(verbosity=2).run(suite)

上面的代码运行以后,得到的输出便是:

至于@classmethod是什么意思,大家先不要管,后面在说装饰器的时候我会专门的和大家说。

2、数据驱动

unittest里的数据驱动也要用到装饰器的知识,还是直接先记住代码即可:

# coding: utf-8

import unittest
import time
import ddt info = [{"username": "captain", "password": 123},
{"username": "warrior", "password": 456}] @ddt.ddt
class MyTest(unittest.TestCase): @classmethod
def setUpClass(cls):
print "SetUp"
time.sleep(2) @classmethod
def tearDownClass(cls):
print "teardown"
time.sleep(2) @ddt.data(*info)
def test01(self, mes):
print mes @ddt.data(*info)
def test03(self, res):
print res["username"] def test02(self):
print "test02" if __name__ == '__main__':
unittest.main()

运行上面代码:

可以看到,我们的info是一个列表,里面套了两个字典,在打印res["username"]的时候回将两个username都打印出来;这也是数据驱动的好处,也就是将用到的数据放到一起(比如一个Excel中),然后通过数据驱动就可以读到Excel中的所有数据了。

以上内容就是我要讲的所有的unittest需要了解的知识了,其实东西并不多,unittest模块常用的基本上就这三篇的知识,将来无论你做接口测试还是UI自动化,都会用到以上知识,所以,现在就学会了记住了,将来会少走很多弯路~~

欢迎大家关注微信公众号“自动化测试实战”,我们一起进步!

最新文章

  1. vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
  2. JVM-绘图展现字节码执行引擎执行过程
  3. 2017年1月3日 星期二 --出埃及记 Exodus 21:29
  4. 关于yaf 框架的win安装
  5. 【LeetCode练习题】Unique Paths II
  6. ASP.NET 联想控件(Autocomplete)测试可用 ascx
  7. XMLTABLE
  8. Java基础重要知识点-反射
  9. EPOCH batchsize
  10. Mac vim“装逼”配置
  11. 数据库与java的连接
  12. 无法将类型“System.Collections.Generic.List<anonymous type:string ClassID,string ClsssName>”隐式转换为“System.Collections.Generic.List<Ecology.Model.EnergyFlowGraph>”
  13. 【大数据系列】MapReduce详解
  14. Ext根据条件显示隐藏列
  15. RabbitMQ和Kafka,更加便捷高效的消息队列使用方式,请放心食用
  16. Android -- 触摸Area对焦区域(更新)
  17. 管道读写规则和Pipe Capacity、PIPE_BUF
  18. 将mysql非分区表转换为分区表(转)
  19. MySQL无法重启问题解决Warning: World-writable config file ‘/etc/mysql/my.cnf’ is ignored
  20. Flume环境安装

热门文章

  1. 设计模式--备忘录模式C++实现
  2. nyoj762——分解质因数+容斥+二分
  3. syslinux启动盘制作
  4. Roman Numeral Converter
  5. 将封装了envi功能的IDL类导出成java类,方便java调用
  6. 1: 介绍Prism5.0 Introduction to the Prism Library 5.0 for WPF(英汉对照版)
  7. LeetCode OJ:Reverse Bits(旋转bit位)
  8. CDN加速的实现 --- varnish
  9. .net的session详解
  10. vue.js 源代码学习笔记 ----- 工具方法 option