现在单元测试也要慢慢作正规了。
参考以下贴子作了一次python,
http://www.cnblogs.com/sunshine-blog/p/6735690.html
最终我可是要用django和mock的哟。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
python unittest四大组成“元件”:
- test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp()和tearDown();
- TestCase(测试案例)——所有测试用例的基类,它是软件测试中最基本的组成单元;
- TestSuite(测试套件)——测试案例的集合;
- test runner(执行测试)——测试用例的执行
(note1:什么是测试用例? 答:测试用例是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown))
unittest测试代码流程:
- 写好TestCase
- 由TestLoader加载TestCase到TestSuite
- 然后由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()
'''
时间: 2025-01-24 01:08:44