Python Unittest 自动化单元测试框架Demo
python 测试框架(本文只涉及 PyUnit)
https://wiki.python.org/moin/PythonTestingToolsTaxonomy环境准备
首先确定已经安装有Python,之后通过安装PyUnit,Python版本比较新的已经集成有PyUnit(PyUnit 提供了一个图形测试界面UnittestGUI.py)
参考: https://wiki.python.org/moin/PyUnit代码实例
使用的IDE为 PyCharm,DEMO结构如图
1.简单地一个实例
# Test002_Fail.py # -*- coding:utf-8 -*- import unittest class Test002_Fail(unittest.TestCase): #测试用例前执行
def setUp(self):
print 'Case Before'
pass #测试用例后执行
def tearDown(self):
print 'Case After'
pass #测试用例1
def test_Case1(self):
a = 3
b = 2
self.assertEqual(a+b,4,'Result Fail') #测试用例2
def test_Case2(self):
a = 2
b = 3
self.assertEqual(a*b,7,'Result Fail') if __name__ == '__main__':
unittest.main()
2.当case比较多的时候,可以使用Suite来管理多个case,suite 可以看做是一个case 的容器,可以装很多的case
# SuiteDemo.py # -*- coding:utf-8 -*- #一个类,添加测试集 import unittest class SuiteDemo(unittest.TestCase): #测试用例前执行
def setUp(self):
print 'Case Before'
pass #测试用例后执行
def tearDown(self):
print 'Case After'
pass def test_Case1(self):
a = 3
b = 2
self.assertEqual(a+b,5,'Result Fail')
print 'Case1' def test_Case2(self):
a = 2
b = 3
self.assertEqual(a*b,6,'Result Fail')
print 'Case2' #定义一个测试集合,方便添加Case def suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(SuiteDemo("test_Case1"))
suiteTest.addTest(SuiteDemo("test_Case2"))
return suiteTest #默认运行时通过 Suite 运行 if __name__ == '__main__':
unittest.main(defaultTest='suite')
3.Suite 和 Case可以分开写在不同的Python文件中,这样方便区分case模块和Suite管理模块,在测试测试的时候只需要在case模块里面添加case,之后添加到Suite模块即可了case模块
# TestCaseDemo # -*- coding:utf-8 -*- import unittest class TestCaseDemo(unittest.TestCase):
def setUp(self):
pass def tearDown(self):
pass def test_Case1(self):
print 'test_Case1' def test_Case2(self):
print 'test_Case2' def test_Case3(self):
print 'test_Case3' def test_Case4(self):
print 'test_Case4'
接下来为三个Suite模块,都是先导入Case模块,之后添加Suite,再在Suite里面添加Case,最后执行的时候需要使用TestRunner,这个TestRunner 相当于Suite 的执行器
简单地TestSuite:
# TestCase_Demo1.py # -*- coding:utf-8 -*- #集合写入一个方法,main调用并启动 import unittest
from TestCase_Demo import TestCaseDemo #添加一个测试集合,并添加Case def suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo('test_Case1'))
return suiteTest #指定并启动测试集合,运行集合方法 if __name__ == '__main__': runner = unittest.TextTestRunner()
runner.run(suite())
也可以不定义Suite方法,直接在main方法中进行Case的添加,之后执行
# TestCase_Demo2.py # -*- coding:utf-8 -*- #集合可以写在main import unittest
from TestCase_Demo import TestCaseDemo #指定并启动测试集合 if __name__ == '__main__': #添加测试集合Case,并启动
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo('test_Case1'))
suiteTest.addTest(TestCaseDemo('test_Case2')) #直接启动集合
runner = unittest.TextTestRunner()
runner.run(suiteTest)可以把不同的Case 添加道不同的Suite里面,同样,可以给Suite分组,用于区分不同的Case,并且,Suite 之间还可以包含
# TestCase_Demo3.py # -*- coding:utf-8 -*- #包含集合,多集合 import unittest
from TestCase_Demo import TestCaseDemo #添加不同的合集 def Suite1():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo("test_Case1"))
suiteTest.addTest(TestCaseDemo("test_Case2"))
print 'Suite1 运行'
return suiteTest def Suite2():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo("test_Case3"))
suiteTest.addTest(TestCaseDemo("test_Case4"))
print 'Suite2 运行'
return suiteTest #包含所有的Suite def AllSuite():
allTest = unittest.TestSuite((Suite1(),Suite2()))
return allTest #运行的时候,可以根据不同的要求,运行不同的Suite,或者全部运行,这样就方便管理每次运行的case if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(AllSuite())
小结
PyUnit 是Python的一个单元测试框架,使用它可以方便的管理自动化运行的case.
在Python 中,每一个方法 只要方法名使用test_ 开头的都被作为是一个用例,都可以看做成一个case,这里介绍了使用Suite管理Case,并且分组运行Case,还有其他很多的功能,请参考:
https://docs.python.org/2.7/library/unittest.html
版权声明:本文为博主原创文章,未经博主允许不得转载。
Python Unittest 自动化单元测试框架Demo的更多相关文章
- TestNg JAVA 自动化单元测试框架Demo
TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...
- python unittest+parameterized,单元测试框架+参数化
总要写新的自动化测试模块,在这里把demo记录下来,后面方便自己直接复制粘贴 from nose_parameterized import parameterized import unittest ...
- Python+selenium+unittest+HTMLTestReportCN单元测试框架分享
分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...
- Keil中搭建自动化单元测试框架Unity
前言: 虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动 ...
- python之使用单元测试框架unittest执行自动化测试
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 单元测试框架即一堆工具的集合. 在说unittest ...
- python模块详解 | unittest(单元测试框架)(持续更新中)
目录: why unittest? unittest的四个重要概念 加载测试用例的三个方法 自动加载测试用例 忽略测试和预期失败 生成html测试报告 why unittest? 简介: Unitte ...
- Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告
基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...
- python之uinttest单元测试框架
unittest,是python中针对单元测试的一个测试框架 相当于python版的junit 简单举个例子: 如图,使用时,测试类需要继承单元测试TestCase这个类 必须要有setUp()和te ...
- python接口自动化8-unittest框架使用
前言 unittest:Python单元测试框架,基于Erich Gamma的JUnit和Kent Beck的sSmalltalk测试框架. 一.unittest框架基本使用 unittest需要注意 ...
随机推荐
- JSONP跨域的原理解析[转]
转自 http://www.nowamagic.net/librarys/veda/detail/224 JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中, ...
- Linux常用命令 新手必看
文件和目录cd /home 进入 '/ home' 目录'cd .. 返回上一级目录cd ../.. 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目 ...
- Windows Azure 网站开发Stacks支持
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Daria Grigoriu 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. Windows Azure 网 ...
- 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法
图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...
- Servlet 实现文件的上传与下载
这段时间尝试写了一个小web项目,其中涉及到文件上传与下载,虽然网上有很多成熟的框架供使用,但为了学习我还是选择了自己编写相关的代码.当中遇到了很多问题,所以在此这分享完整的上传与下载代码供大家借鉴. ...
- BZOJ 4145: [AMPPZ2014]The Prices( 状压dp + 01背包 )
我自己只能想出O( n*3^m )的做法....肯定会T O( nm*2^m )做法: dp( x, s ) 表示考虑了前 x 个商店, 已买的东西的集合为s. 考虑转移 : 先假设我们到第x个商店去 ...
- EXT.NET高效开发(三)——使用Chrome浏览器的开发人员工具
这篇帖子老少皆宜,不分男女,不分种族,不分职业.俗话说:“磨刀不误砍柴工”.掌握一些开发工具的使用,对自己帮助是很大的(无论是用于分析问题,还是提高生产力).本篇就讲述如何利用Chrome浏览器(这里 ...
- javascript每日一练(十二)——运动框架
运动框架 可以实现多物体任意值运动 例子: <!doctype html> <html> <head> <meta charset="utf-8&q ...
- NSString和NSDate的转换
输入的日期字符串形如:@"1992-05-21 13:08:08" - (NSDate *)dateFromString:(NSString *)dateString{ NSDat ...
- 简要解析XMPP框架及iOS-Objective-C的使用
前言:这两天看了XMPP框架,查阅了一些资料,写下这篇文章记录一下学习笔记 一.简要解析XMPP核心部分 XMPP框架分为两个部分 1.核心部分 2.扩展部分 扩展部分主要讲好友列表(roster). ...