通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中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. 【三小时学会Kubernetes!(二) 】Kubernetes 简介及Pod实践

    Kubernetes 简介 我向你保证我没有夸大其词,读完本文你会问“为什么我们不称它为 Supernetes?” Kubernetes 是什么? 从容器启动微服务后,我们有一个问题,让我们通过如下问 ...

  2. [转]检测SQLSERVER数据库CPU瓶颈及内存瓶颈

    在任务管理器中看到sql server 2000进程的内存占用,而在sql server 2005中,不能在任务管理器中查看sql server 2005进程的内存占用,要用 以下语句查看sql se ...

  3. JS怎么计算html标签里文字的宽度

    方法: 做一个空的html 标签 id为“ruler”,样式为“position:absolute;visibility: hidden; white-space: nowrap;z-index: - ...

  4. 《高级Web应用程序设计》疑难杂症(201709011)

    (提供答案的同学,可获得加分小星星,每题1分,总分哦.) 1.DisplayColumn特性加在模型类上,它的用途是什么?

  5. slim(4621✨)

    用于代码瘦身. 老鸟建议:不要混写js 和 html,如果避免不了,当前文件可以改为erb格式,混用slim和erb不是什么问题. git:  https://github.com/slim-temp ...

  6. cordova安卓sdk

    Android SDK在线更新镜像服务器来下载安装: 1.北京化工大学镜像服务器地址: IPv4: ubuntu.buct.edu.cn/ 端口:80 IPv4: ubuntu.buct.cn/ 端口 ...

  7. Attribute 'items' must be an array, a Collection or a Map错误解决!

    唉!真的要说一句话叫做论一串代码的重要性!就是如此的气人!气的牙根痒痒! 前几天刚刚写过SpringMVC之ModelAndView的 jsp值在浏览页面不显示的问题!也是因为这一串代码,但是这一次一 ...

  8. oracle11g客户端如何完全卸载(转)

    1.停用Oracle服务:进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止 2.在开始菜单中,找到Universal Installer,运行Oracle Universal I ...

  9. Project facet Java version 1.8 is not supported.

    Eclipse中添加项目到Servers中时提示“Project facet Java version 1.8 is not supported.” 解决方案:方法一:选中项目,右键roperties ...

  10. 基于vue-cli,测试非父子传值时,碰到 keep-alive的神奇

    非父子传值测试 一直都很好奇非父子传值到底如何,结果入坑许久才爬出来,才知道在脚手架里测试就是坑. 问题: 测试非父子传值时,由于组件之间是通过路由进行跳转,值传过去又被刷掉 思路: 因为路由跳转,相 ...