1. python 测试框架(本文只涉及 PyUnit)

    https://wiki.python.org/moin/PythonTestingToolsTaxonomy

  2. 环境准备

    首先确定已经安装有Python,之后通过安装PyUnit,Python版本比较新的已经集成有PyUnit(PyUnit 提供了一个图形测试界面UnittestGUI.py)

    参考: https://wiki.python.org/moin/PyUnit

  3. 代码实例

    使用的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())

  4. 小结

    PyUnit 是Python的一个单元测试框架,使用它可以方便的管理自动化运行的case.

    在Python 中,每一个方法 只要方法名使用test_ 开头的都被作为是一个用例,都可以看做成一个case,这里介绍了使用Suite管理Case,并且分组运行Case,还有其他很多的功能,请参考:

    https://docs.python.org/2.7/library/unittest.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python Unittest 自动化单元测试框架Demo的更多相关文章

  1. TestNg JAVA 自动化单元测试框架Demo

    TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...

  2. python unittest+parameterized,单元测试框架+参数化

    总要写新的自动化测试模块,在这里把demo记录下来,后面方便自己直接复制粘贴 from nose_parameterized import parameterized import unittest ...

  3. Python+selenium+unittest+HTMLTestReportCN单元测试框架分享

    分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...

  4. Keil中搭建自动化单元测试框架Unity

    前言: 虽然一些C++的自动化单元测试框架也能用来C语言单元测试,但那样我们编写C语言程序时需要符合C++的标准,这样有一些C的特性是无法使用的,限制C的特性使用不太好,于是找了一个全部用C实现的自动 ...

  5. python之使用单元测试框架unittest执行自动化测试

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 单元测试框架即一堆工具的集合. 在说unittest ...

  6. python模块详解 | unittest(单元测试框架)(持续更新中)

    目录: why unittest? unittest的四个重要概念 加载测试用例的三个方法 自动加载测试用例 忽略测试和预期失败 生成html测试报告 why unittest? 简介: Unitte ...

  7. Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  8. python之uinttest单元测试框架

    unittest,是python中针对单元测试的一个测试框架 相当于python版的junit 简单举个例子: 如图,使用时,测试类需要继承单元测试TestCase这个类 必须要有setUp()和te ...

  9. python接口自动化8-unittest框架使用

    前言 unittest:Python单元测试框架,基于Erich Gamma的JUnit和Kent Beck的sSmalltalk测试框架. 一.unittest框架基本使用 unittest需要注意 ...

随机推荐

  1. HDU 5025Saving Tang Monk BFS + 二进制枚举状态

    3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...

  2. Ubuntu无法进入图形界面及VirtualBox扩容的解决方案

    升级Ubuntu 12.04后出现“Ubuntu is running in low-graphics mode?”,无法进入图形界面,而且给了一些选项,发现其他几个都没有用,最终只能使用low-gr ...

  3. Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)

    尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...

  4. 简单实用的下拉菜单(CSS+jquery)

    原文 简单实用的下拉菜单(CSS+jquery) 没什么可以说的,直接上例子 html+jquery代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  5. c语言‘\0’ ,‘0’, “0” ,0之间的区别

    首先比较一下‘\0’和‘0’的区别.有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节.请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上, ...

  6. poj1887 Testing the CATCHER

    Testing the CATCHER Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13968   Accepted: 5 ...

  7. CSS基础3——使用CSS格式化元素内容的字体

    1.CSS属性单位: (1)长度单位:包含绝对长度单位和相对长度单位 绝对长度单位包含:cm.mm.in.pt.pc等. 绝对长度单位最好用于打印输出设备.在仅作为频幕显示时.绝对长度值并没有什么意义 ...

  8. JAVA思维导图系列:多线程0基础

    感觉自己JAVA基础太差了,又一次看一遍,已思维导图的方式记录下来 多线程0基础 进程 独立性 拥有独立资源 独立的地址 无授权其它进程无法訪问 动态性 与程序的差别是:进程是动态的指令集合,而程序是 ...

  9. hdu1730 Northcott Game,Nim-sum

    题解: 转化成求Nim-sum 每行黑白棋的初始间距作为每堆石子个数 假设当前为P态,则无论当前选手如何操作,下一个选手都能使其操作后的局面又变为P态. Nim-sum = 0,即P态. #inclu ...

  10. Website 内容管理

    公司网站后是这样的. 用的是中企动力的,后台还是比较好管理的.所以不多说什么了.