Python--自由之路(二)Unittest Framework

简介: l Python Unit Testing Framework ---Unittest Model  学习 l Python 中的测试框架,也可称做PyUnit ,几乎就是JUnit的Python 版本。

 

Python Unit Testing Framework ---Unittest Model  学习

Python 中的测试框架,也可称做PyUnit ,几乎就是JUnitPython 版本。支持setup and shutdown code for tests, 独立测试,集成测试,我使用的是python 2.6 ,内置的测试模块名为unittest 。可以通过from unittest import * 方法导入需要的功能模块 

继承python Unittest TestCase ,测试方法必须以test开头命名,单元测试时可使用派生使初始化测试代码的重用。

TestSuit,作为轻量级集成测试时使用。可以方便地添加基类型为Testcase的所有子类,统一测试。

widgetTestSuite=unittest.TestSuite() widgetTestSuite.addTest(WidgetTestCase('testDefaultSize')) widgetTestSuite.addTest(WidgetTestCase('testResize'))

单元测试的使用---导入unittest模块 unittest.main() 在被测试单元中实现至少一个TestCase派生,或者从TestLoader加载,例

suite =unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions) unittest.TextTestRunner(verbosity=2).run(suite) 

为了工作方便,在上述基础上写了一个测试模块test,当创建好自己的模块后,有时候需要进行模块的单元测试,这时候只要导入test, 然后在Tested Module代码后面直接调用函数测试,属性值测试,就可以直接测试了,测试结果集成了TestCaseResult,会给出具体的测试报告,自己觉得很方便而已,呵呵,后面有时间还想扩展一下针对类的测试,在函数测试上引入多线程等等。主要应用了Python运行时脚本编译的特性,根据被测试模块的内容动态生成字符串代码对象,经编译后就可以在程序中动态生成类以供调用。附test代码:

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
'''
Created on 2009-7-18

@author: ysisl

This is a unit test framework module .

you can test your Module only by imported test.py 

1. use addTestAttrs(attr_name,value) ,add the testing variable(attr_name) of your module (value is anticipant)

2. use adddTestMethods(func,args,result=None) ,add the testing Function of your module

    (args must be tuple type,example:'args=(3,4)')

'''

from time import ctime

import unittest

__all__=['allTestAttrs','allTestMethods','startModuleTest']

_model_funcs
=[]

_model_attrs
=[]

def addTestAttrs(_attr_name,value):

    _model_attrs.append((_attr_name,value))


def addTestMethods(func,args,result=None):

    _model_funcs.append((func,args,result))


def makecode():

    _head_code
='''

class TestModule(unittest.TestCase):

    def a(self):

        print 'aaa'

'''
    _loop_func
=_loop_attr=''

    
for i,attr in enumerate(_model_attrs):

        _attr,_attr_value
=attr[0],attr[1]

        
if type(_attr)==str :

            _attr
=repr(_attr)

            _attr_value
=repr(_attr_value)

        _loop_attr_code
='''

    def test_attr_%s(self):

        self.assertEqual(%s,%s)

''' %(str(i+1),_attr ,_attr_value)

        _loop_attr
=_loop_attr+_loop_attr_code

    
for i,func in enumerate(_model_funcs):

        _func_result
=str(func[2])

        
if type(func[2])==str:

            _func_result
=repr(func[2])

        _loop_func_code
='''       

    def test_method_%s(self):

        self.assertEqual(%s(*%s),%s)

        

''' %(func[0].__name__,'_model_funcs['+str(i)+'][0]',str(func[1]),_func_result)

        _loop_func
+=_loop_func_code

    
return _head_code+_loop_attr+_loop_func

def startModuleTest():

    
print ''.join(['*'*13,' '*2,'Model Unit Test at:',ctime(),' '*2,'*'*13,'\n'])

    code
= makecode()

    
exec code

    suite 
= unittest.TestLoader().loadTestsFromTestCase(TestModule)

    unittest.TextTestRunner(verbosity
=2).run(suite)


if __name__ == '__main__':

    addTestMethods(addTestAttrs, (
'test','test'),None)

startModuleTest()

 

目录
相关文章
|
测试技术 Python
关于python3 unittest 调用unittest.main() 执行多个测试函数并没有顺次执行的探讨。
在学习Python的单元测试的时候,扩展了一下,本来是想用setup和tearDown做一个简单的编号记录。然而,发现了问题。
116 0
|
11月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
691 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
XML 测试技术 数据格式
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
162 3
|
Java 测试技术 程序员
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
154 1
|
测试技术 Python
python接口自动化测试 - unittest框架suite、runner详细使用
python接口自动化测试 - unittest框架suite、runner详细使用
|
测试技术 Python
Python测试架构unittest
【4月更文挑战第19天】
80 3
|
测试技术 Python
【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手
【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手
302 0
|
测试技术 Python 容器
09 Python之UnitTest【使用,生成HTML测试报告】
09 Python之UnitTest【使用,生成HTML测试报告】
245 0
09 Python之UnitTest【使用,生成HTML测试报告】
|
数据采集 Python
matlab疲劳驾驶检测项目,Python高级面试framework
matlab疲劳驾驶检测项目,Python高级面试framework
|
Java 测试技术 数据库连接
【如何学习Python自动化测试】—— Python 的 unittest 框架
【如何学习Python自动化测试】—— Python 的 unittest 框架
81 0

推荐镜像

更多