python基础===利用unittest进行测试用例执行的几种方式
利用python进行测试时,测试用例的加载方式有2种:
一种是通过unittest.main()来启动所需测试的测试模块;
一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别列出3种方法的具体使用方式:
1、通过unittest.main()来执行测试用例的方式:
import unittest
class UCTestCase(unittest.TestCase): |
2、通过testsuit来执行测试用例的方式:
import unittest # 执行测试的类 class UCTestCase(unittest.TestCase): def setUp(self): #测试前需执行的操作 ..... def tearDown(self): #测试用例执行完后所需执行的操作 ..... # 测试用例1 def testCreateFolder(self): #具体的测试脚本 ...... # 测试用例2 def testDeleteFolder(self): #具体的测试脚本 ...... if __name__ == "__main__": # 构造测试集 suite = unittest.TestSuite() suite.addTest(UC7TestCase("testCreateFolder")) suite.addTest(UC7TestCase("testDeleteFolder")) # 执行测试 runner = unittest.TextTestRunner() runner.run(suite) |
3、通过testLoader方式:
import unittest class TestCase1(unittest.TestCase): #def setUp(self): #def tearDown(self): def testCase1(self): print 'aaa' def testCase2(self): print 'bbb' class TestCase2(unittest.TestCase): #def setUp(self): #def tearDown(self): def testCase1(self): print 'aaa1' def testCase2(self): print 'bbb1' if __name__ == "__main__": #此用法可以同时测试多个类 suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1) suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2) suite = unittest.TestSuite([suite1, suite2]) unittest.TextTestRunner(verbosity=2).run(suite) |
下面针对上述脚本中应用到的unittest模块下的几个成员进行简单的介绍,以便于理解上述代码:
TestCase:所有测试用例的基本类,给一个测试方法的名字,就会返回一个测试用例实例;
TestSuit:组织测试用例的实例,支持测试用例的添加和删除,最终将传递给 testRunner进行测试执行;
TextTestRunner:进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息;
TestLoader:用来加载TestCase到TestSuite中的,其中有几个 loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例;
本文转自:http://www.51testing.com/html/10/448910-3648852.html
# -*- coding:utf-8 -*-
import unittest class test(unittest.TestCase): def setUp(self):
print 'This is the setup msg' def tearDown(self):
print 'This is the teardown msg' def test1(self):
print 'This is the first testcase' def test2(self):
print 'This is the second testcase' def test3(self):
print 'This is the third testcase' 运行方法一:
if __name__ == '__main__':
unittest.main()
通过unittest.main()执行时,main会调用TextTestRunner中的run来执行 运行方法二:
suite = unittest.TestLoader().loadTestsFromTestCase(test)
unittest.TextTestRunner().run(suite)
通过创建一个测试套,将所有用例全部加载到测试套中,然后直接调用TextTestRunner方法能运行测试套(此时测试套中的用例执行还是无规则,不一定会按用例顺序进行执行) 运行方法三:
suite = unittest.TestSuite()
suite.addTest(test('test3'))
unittest.TextTestRunner().run(suite)
通过创建一个测试套,给测试套中增加一条测试用例,然后再调用TextTestRunner方法单独执行该测试用例 运行方法四:
suite = unittest.TestSuite()
suite.addTest(test('test3'))
suite.addTest(test('test1'))
unittest.TextTestRunner().run(suite)
通过创建一个测试套,给测试套中连续增加两条测试用例,然后再调用TextTestRunner方法执行该测试用例,此时会按照加载用例的顺序进行执行用例,但这种方法有点土,不强大(不建议使用) 运行方法五:
suite = unittest.TestSuite()
suite.addTests([test('test3'),test('test1'),test('test2')])
unittest.TextTestRunner().run(suite)
通过创建一个测试套,直接通过addTests()方法,添加一个用例列表进去,然后再调用TextTestRunner方法执行测试用例,此种方法能让unitest按照想要的执行顺序进行执行用例(对用例执行顺序有要求的此方法比较建议使用) 运行方法六:
def runTest(testcaseclass,testcase=[]):
suite = unittest.TestSuite()
for case in testcase:
suite.addTest(testcaseclass(case))
unittest.TextTestRunner().run(suite)
runTest(test,['test2','test3','test1']) 通过定义一个unitest运行方法,后面执行时直接调用该自定义方法,给上对应的赋值,程序就会按照想 要的执行程序进行执行(此种方法比较好,只要建立一个公共方法,后面在其它模块中直接调用,省去重复敲代码)
本文摘自:
http://www.cnblogs.com/51study/p/9284356.html
如果想使用其它的测试报告:
def suite():
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = './' + now + 'test_result.html'
fp = open(filename,'wb')
runner = HTMLTestRunner(stream = fp,
title = "快递查询接口测试报告",
description = "测试用例执行情况:") suite = unittest.TestSuite()
suite.addTest(ExpressInquiry("test001_type_valid"))
suite.addTest(ExpressInquiry("test002_type_invalid"))
suite.addTest(ExpressInquiry("test003_id_valid")) #unittest.TextTestRunner().run(suite) runner.run(suite)
fp.close() if __name__ == '__main__':
suite()
测试报告生成模版参考:
自动化测试===unittest和requests接口测试案例,测试快递查询api(二)
python基础===利用unittest进行测试用例执行的几种方式的更多相关文章
- python利用unittest进行测试用例执行的几种方式
利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块: 一种是添加到testsuite集合中再加载所有的被测试对象,而tes ...
- 基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括 ...
- iOS:延时执行的三种方式
延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObj ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
http://www.cnblogs.com/wuhuacong/p/4085682.html 在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交, ...
- iOS中延时执行的几种方式的比较和汇总
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- IOS中延时执行的几种方式的比较
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- Python交换a,b两个数值的三种方式
# coding:utf-8 a = 1 b = 2 # 第一种方式 # t = a # 临时存放变量值 # a = b # b = t # 第二种方式 # a = a + b # a的值已经不是原始 ...
- shell script执行的几种方式
编写一个shell脚本test.sh,内容如下 a='测试执行方式' echo $a 方式1 使用路径的方式执行 chmod a+x test.sh ./test.sh 执行结果如下 当脚本执行之后, ...
- js中页面加载完成后执行的几种方式及执行顺序
1:使用jQuery的$(function){}; 2:使用jquery的$(document).ready(function(){});前两者本质上没有区别,第1种是第2种的简写方式.两个是docu ...
随机推荐
- Solr实现SQL的查询与统计--转载
原文地址:http://shiyanjun.cn/archives/78.html Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala,只要熟悉SQL,就可以熟练地使用I ...
- 解决二维数组转为ArrayList集合问题
1.修改前代码块 String[][] str = { { "语文", "100" }, { "英语", "90" }, ...
- OSPF虚连接简单配置
实验实例:<华为路由器学习指南>P715 本实例的拓扑结构如图:Area 2没有直接与骨干区域直接相连,Area 1被用作传输区域来连接Area 0与Area2.为了使Area2与骨干区域 ...
- jQuery绑定事件
1.事件绑定的方式 事件 DOM:三种绑定方式 jQuery: #前面几种内部调用的全是on $('.c1').click() $('.c1').blur() $('.c1').aaaaa() $(' ...
- Java导出数据行写入到Excel表格:基于Apache POI
Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.ap ...
- S-T平面图
给定一个平面图和一个源点S.汇点T都在图中无边界的区域上,这样的图叫S-T平面图 我们把图中每一个独立的面看做一个点,对于每条边e,将它两侧的面连一条边,其中靠近S的一段与S相连,与T相连的一段与T相 ...
- mybatis sql使用经验总结
1.where 后面如果有动态sql,可以添加一个1=1条件,然后在后面添加动态sql语句,里面添加AND 例如: <select id="queryBizMonitorHistory ...
- 给深度学习入门者的Python快速教程 - 基础篇(转)
原文:https://zhuanlan.zhihu.com/p/24162430 5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5. ...
- laravel调试神器tinker
一直以来,想调试框架中的某些东西,如想知道 Elpquent 的 create 方法返回值是个什么东西, 以前的话,应该就是在 create 方法调用之后,使用 dd 或者 var_dump 之类的函 ...
- ubuntu 16 server 安装lnmp所需依赖
安装 1.nginx build-essential libc6 libpcre3 libpcre3-dev libssl-dev zliblg zliblg-dev lab-base 依赖库: ap ...