今天是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自动化,都会用到以上知识,所以,现在就学会了记住了,将来会少走很多弯路~~

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

接口测试基础——第6篇unittest模块(三)的更多相关文章

  1. 接口测试基础——第6篇unittest模块(二)

    通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中setUp和tearDown方法分别运行了三次.没错,这也就是说,每次运行用例之前都会运行setUp和tearDown方法.今 ...

  2. 接口测试基础——第6篇unittest模块(一)

    我们先来简单介绍一下unittest框架,先上代码,跟住了哦~~ 1.建立如下结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选 ...

  3. 接口测试基础——第5篇xlrd模块

    读取Excel表格中的内容,不多说,直接上代码: # coding: utf-8 import xlrd # excel路径 excel_path = r'C:\Users\weiming\Deskt ...

  4. 接口测试基础——第4篇logging模块

    Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...

  5. Java基础之集合篇(模块记忆、精要分析)

    千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...

  6. 接口测试基础——第7篇 Python中_、__、__func__之间的区别

    今天的东西很少,主要是给自己做个笔记,顺便帮大家普及一下Python中的边角知识: 1.if __name__ == "__main__"是什么意思 答:一个.py文件,如果是自身 ...

  7. 接口测试基础——第3篇smtplib发送带图片的邮件

    smtplib发送邮件最后一篇,发送带图片的邮件: 大家可以去廖雪峰的网站看一下,下面的代码就是我跟着博客写的,哈哈,大家即使不明白为什么,也要多写两遍,记在心里,如果有不明白的地方可以留言,船长会第 ...

  8. 接口测试基础——第7篇 简单的Python知识普及(二)之装饰器

    今天我们来学习python里面的“装饰器” 1.我在函数test运行前想先打印一些内容怎么办? def func(param):    print u"打印的内容"    para ...

  9. 接口测试基础——第2篇smtplib发送带附件的邮件

    我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...

随机推荐

  1. thinkphp getField("xxxxx", true); 得到一个字段所有值组成的的数组

    很多时候我们只需要一张表里某个字段的值,组成的数组 $Channel = D('channel');$channelList = $Channel->order('user_name')-> ...

  2. JavaScript声明全局变量三种方式的异同

    JavaScript中声明变量很简单var(关键字)+变量名(标识符). 方式1 1 2 var test; var test = 5; 需注意的是该句不能包含在function内,否则是局部变量.这 ...

  3. IntelliJ IDEA 2017 主题安装及配置

    主题哪里下的? 网站:http://www.riaway.com/ 主题怎么安装? 然后选择文件,找到下载的主题,按步骤,重启之后即可使用: 主题如何配置? 以下所有配置基于 IntelliJ IDE ...

  4. angular $q的学习笔记转帖

    http://blog.segmentfault.com/bornkiller/1190000000402555 angular $q的一个不错的学习笔记

  5. Wannafly挑战赛14E无效位置

    https://www.nowcoder.com/acm/contest/81/E 给一个1-base数组{a},有N次操作,每次操作会使一个位置无效.一个区间的权值定义为这个区间里选出一些数的异或和 ...

  6. spring配置bean的生命周期

    配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  7. opencv:图像的基本变换

    0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系,这个可以用坐标系来思考,在opencv中, 图像的坐标系是从左上角开始(0,0),向右是x增加方向(cols),向下时y增加方向( ...

  8. elasticsearch实现网站搜索

    使用elasticsearch 实现网站搜索,可以支持商品搜索,筛选项过滤搜索 ,价格排序, 打分 筛选项聚合,还有其他综合排序 后续推出搜索人工干预排序,根据销量,好评率,售卖率 进行全方位的搜索实 ...

  9. L151

    In Toothy Prequel, Piranha-Like Fish Menaced Jurassic Seas You can call it a prehistoric prequel.Sci ...

  10. Linux系统中DHCP的配置

    DHCP为动态主机配置协议,负责IP地址的动态分配(当一个主机的IP为自动,则不需要自己写IP,他会在DHCP服务器的范围内自动获取) 在真机或虚拟机下配置DHCP服务时,需要先下载dhcp软件,使用 ...