python单元测试之unittest

来源:互联网 发布:火女永恒矩阵 编辑:程序博客网 时间:2024/05/27 00:44

现在单元测试也要慢慢作正规了。

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

参考以下贴子作了一次python,

http://www.cnblogs.com/sunshine-blog/p/6735690.html

最终我可是要用django和mock的哟。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

043c28e84dcc92f618869484cfcf0e57c502101f043c28e84dcc92f618869484cfcf0e57c502101f

python unittest四大组成“元件”:

  • test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp()和tearDown();
  • TestCase(测试案例)——所有测试用例的基类,它是软件测试中最基本的组成单元;
  • TestSuite(测试套件)——测试案例的集合;
  • test runner(执行测试)——测试用例的执行

  (note1:什么是测试用例? 答:测试用例是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown))

 

unittest测试代码流程:

  1. 写好TestCase
  2. 由TestLoader加载TestCase到TestSuite
  3. 然后由TextTestRunner来运行TestSuite,预见性结果保留在TextTestResult中(使用命令行或unittest.main()调用执行)



#!/usr/bin/env python# -*- coding: utf-8 -*-import unittestimport myclassclass mytest(unittest.TestCase):    #初始化工作    def setUp(self):        self.tclass = myclass.myclass() #实例化了被测试模块中的类    #退出清理工作    def tearDown(self):        pass        #具体的测试用例    def test_sum(self):        self.assertEqual(self.tclass.sum(1,2), 3)    #跳过某个case    @unittest.skip("I don't want to run this case.")    def test_sub(self):        self.assertEqual(self.tclass.sub(4, 2), 2)    def test_multi(self):        self.assertEqual(self.tclass.multi(2, 3), 5)if __name__ == '__main__':        #装载测试用例(该句话等价于tests = [mytest("test_sum"),mytest("test_sub"),mytest("test_multi")])    tests = unittest.TestLoader().loadTestsFromTestCase(mytest)    #使用测试套件并打包测试用例(addTests()等价于addTest())    suite = unittest.TestSuite()    suite.addTest(tests)    #保存unittest的测试输出日志    log_name = "log.txt"    with open(log_name, 'w+') as f:        result = unittest.TextTestRunner(stream=f, verbosity=2).run(suite)    #若不保存测试输出结果,执行如下命令    result = unittest.TextTestRunner(verbosity=2).run(suite)    #生成测试报告    print("testsRun:%s"%result.testsRun)    print("failures:%s"%len(result.failures))    print("errors:%s"%len(result.errors))    print("skipped:%s"%len(result.skipped))    '''    unittest.main()    '''    

3425c10ac32499f96d2b54d1b64a811ad5fe6558

阅读原文

http://click.aliyun.com/m/34928/

原创粉丝点击