接口测试基础——第6篇unittest模块(二)
通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中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模块(二)的更多相关文章
- 接口测试基础——第6篇unittest模块(三)
今天是unittest最后一讲,我们解决一下如何只运行一次setUp和tearDown方法以及简单的数据驱动的知识. 1.只运行一次setUp和tearDown方法 很简单,只需要把setUp和tea ...
- 接口测试基础——第6篇unittest模块(一)
我们先来简单介绍一下unittest框架,先上代码,跟住了哦~~ 1.建立如下结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选 ...
- 接口测试基础——第5篇xlrd模块
读取Excel表格中的内容,不多说,直接上代码: # coding: utf-8 import xlrd # excel路径 excel_path = r'C:\Users\weiming\Deskt ...
- 接口测试基础——第4篇logging模块
Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...
- 接口测试基础——第7篇 简单的Python知识普及(二)之装饰器
今天我们来学习python里面的“装饰器” 1.我在函数test运行前想先打印一些内容怎么办? def func(param): print u"打印的内容" para ...
- 接口测试基础——第7篇 Python中_、__、__func__之间的区别
今天的东西很少,主要是给自己做个笔记,顺便帮大家普及一下Python中的边角知识: 1.if __name__ == "__main__"是什么意思 答:一个.py文件,如果是自身 ...
- 接口测试基础——第3篇smtplib发送带图片的邮件
smtplib发送邮件最后一篇,发送带图片的邮件: 大家可以去廖雪峰的网站看一下,下面的代码就是我跟着博客写的,哈哈,大家即使不明白为什么,也要多写两遍,记在心里,如果有不明白的地方可以留言,船长会第 ...
- Java基础之集合篇(模块记忆、精要分析)
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...
- 接口测试基础——第2篇smtplib发送带附件的邮件
我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下: # coding=utf-8 import smtplib from email.mime.text import MIM ...
随机推荐
- TIME_WAIT和CLOSE_WAIT
先看下三次握手四次挥手的状态变化: 通常会遇到下面两种情况: 服务器保持了大量TIME_WAIT状态 服务器保持了大量CLOSE_WAIT状态 因为linux分配给一个用户的文件句柄是有限的,而TIM ...
- Chrome自动化搭建
工具安装: 1.selenium-java-2.53.0-srcs.jar 2.selenium-java-2.53.0.jar 3.下载chromedriver.exe(下载地址:http://ch ...
- web页面中 将几个字段post提交
思路 自己在html中构建form 先根据传入的action构建form的action 然后根据要提交的字段构建form中的元素 最后通过调用form中的按钮提交from表单 方法:var jsP ...
- [myeclipse]@override报错问题
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Ove ...
- HDU1595-最短路-删边
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- 普通for循环遍历LinkedList弊端
java开发过程中,用到的最多的List集合就属ArrayList与LinkedList.对于ArrayList的遍历,通常是下面的方法: public static void main(String ...
- js停止(阻止)浏览器继续加载内容
这个应该是一个比较特殊的要求,一般网站都没有这个功能,对于一个新手来说,真的不知道从何处下手,只有在网上搜索了,寻找现成答案,寻寻觅觅一天没有结果.但是这个功能还是需要,第二天继续网上大肆搜寻.终于功 ...
- 【zznu-2060】 Minsum Plus(最小正子段和)
题目描述 题意简单到令人发指! 序列A由N个整数组成,从中选出一个连续的子序列,使得这个子序列的和为正数,且和为所有和大于零的子序列中的最小值. 将这个值输出,若无解,输出no solution. 输 ...
- PHP工作笔记:离线执行php任务
直接上代码,主要函数 ignore_user_abort(true);这个函数忽略了终端被关闭(打开的网页被关闭),后面 getfiles()这函数是执行采集任务的自定义函数,后面又配置了下路径打开写 ...
- web运行异常解决
端口占用: 在dos下,输入 netstat -ano|findstr 8080 //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill /pid 6856 /f ...