python单元测试之unittest

本文介绍Python单元测试的基本组成元件及流程,并提供了一个使用unittest模块进行测试的示例,包括测试用例的创建、测试套件的组织以及测试结果的输出。

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

参考以下贴子作了一次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 unittest
import myclass

class 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值