通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中setUp和tearDown方法分别运行了三次。没错,这也就是说,每次运行用例之前都会运行setUp和tearDown方法。今天我们就来具体的说一下unittest模块是如何运行所有的用例的:

先写如下用例:

# coding: utf-8
import unittest
import time
class MyTest(unittest.TestCase):
def setUp(self):
print "SetUp"
time.sleep(2)
def tearDown(self):
print "teardown"
time.sleep(2)
def test01(self):
print "test01"
def test03(self):
print "test03"
def test02(self):
print "test02"
if __name__ == '__main__':
pass

上面有三个用例,他们是按什么顺序运行的?又是如何一次运行三个用例呢?

大家只需要把下面的的方法替换if __name__ == '__main__':下面的pass就可以了

第一种方法:

unittest.main()

替换以后运行就可以看到如下输出:

首先我们可以看到运行的顺序是test01->test02->test03的顺序,也就是说运行是有顺序的;其次,可以看到下面框起来的点,点表示成功,F表示失败,E表示报错。

第二种方法:

通过测试套件,加载全部的测试用例,然后运行

suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
unittest.TextTestRunner(verbosity=2).run(suite)

这里的verbosity=2作用是打印的时候会将对应的用例名字同时打印出来,这样看起来会很方便~~~

注意,此时你运行时光标一定要在if的下面,这样才会运行全部用例,如果你把光标放在任意用例上,那么只会运行那一个用例。

第三种方法:

同样是通过测试套件来运行:

testsuit = unittest.TestSuite()
testsuit.addTest(MyTest("test03"))
testsuit.addTest(MyTest("test02"))
runner = unittest.TextTestRunner()
runner.run(testsuit)

这种方式的特点是只有你addTest写了用例名,那么运行的时候才会去运行,像上面我只加载了test03和test02两个用例,那么在运行时就只会运行这两个用例了。

第四种方法:

加载固定测试用例文件中的用例

test_dir = 测试用例路径
report_dir = 测试报告存放路径
test_discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
runner = unittest.TextTestRunner()
runner.run(test_discover)

这种方法是不是很眼熟?是的,这就是上一次我们用过的方式,只不过我们上次不仅运行了用例,还将其作为邮件发出去了。

以上就是加载测试用例常用的方法了。

还需要了解的是跳过测试用例的方法:

如果你既想一下运行所有用例,又想跳过一些不想跑的用例,那你就需要这句话了,

@unittest.skip('跳过用例的原因')

只要在不想运行的用例上面加上这句话,那么对应的用例就不会运行啦。这种方式叫做装饰器,有时间我会考虑专门的和大家说一下装饰器。因为有时候我们不想每次用例执行前都运行setUp和tearDown方法~~这个后面再说

需要注意的是,unittest模块(框架)用途还是非常多的,最常用的地方在小编看来其实是UI自动化Selenium。只要掌握了以上只是,在运行UI自动化的时候,代码也容易些啦~~~

微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

还请大家多多提意见,我们慢慢来,重要的是学会~~~如果你觉得对你有帮助,也欢迎大家转发,船长先谢谢各位啦~~~

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

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

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

  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. 接口测试基础——第7篇 简单的Python知识普及(二)之装饰器

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

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

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

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

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

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

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

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

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

随机推荐

  1. activity之间通过全局变量传递数据

    activity之间通过全局变量传递数据 一.简介 Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉 ...

  2. 5.彻底理解volatile

    1. volatile简介 在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其 ...

  3. day18 分页+form验证+中间件

    参考课件: http://www.cnblogs.com/wupeiqi/articles/6144178.html http://www.cnblogs.com/wupeiqi/articles/5 ...

  4. JavaScript---事件监听

    JavaScript的事件监听是通过addEventListener()来实现的 它算是事件绑定的第二种方式. 他的特别之处在于这种绑定事件的方法不会被同名事件覆盖. 看具体的demo <!DO ...

  5. css实现水平 垂直居中

    css实现水平居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  6. ffmpeg 命令小记

    指定格式转码 ffmpeg -i 1.mp4 -c:v libx264 -c:a aac -y 1.flv 等时长转为m3u8格式 ffmpeg -i 1.avi -c:v libx264 -c:a ...

  7. CF 914

    照例看A 然后A了 看B 似乎博弈一下就可以了 然后看C 似乎是DP 然后看了room woc似乎有黑红名 赶紧hack 然后没有人有问题 思考为什么 突然看到房间有15hack... 好吧我做D 然 ...

  8. 模式窗体中调用父页面js与非模式化调用非父页面的js方法

    最近项目中使用模式窗体,遇到以下问题记录一下: 模式窗体:你必须关闭该窗体,才能操作其它窗体:比如说,必须按确定或取消,或者按关闭. 非模式窗体:不必关闭该窗体,就可转换到其它窗体上进行操作. 一:非 ...

  9. HTML5音视频播放(Video,Audio)和常见的坑处理

    1. 前言背景 在HTML5出现之前,Web页面访问音视频主要是通过Flash,Activex插件,还有微软后来推出的silverlight来展现的,尽管FLASH曾经风靡全球,但是随着互联网的不断发 ...

  10. 怎样安装 OpenJDK 8 in Ubuntu 14.04 & 12.04 LTS

    OpenJDK Java 8 has been made into official Ubuntu repositories for 14.10 Utopic and higher. For Ubun ...