对计算器和单词检索程序进行单元测试

Posted dbefb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对计算器和单词检索程序进行单元测试相关的知识,希望对你有一定的参考价值。

一、编程思路

 

  1、图逻辑框图

  2、确定测试用例

  3、进行单元、覆盖率测试

 

二、代码实现

  1、计算器单元测试

  首先对照代码画了类似下图的简单逻辑框图技术图片

然后对照每一个判断节点,设计了一些测试用例,在调试过程中会发现代码的一些缺陷,然后增加或者修改测试用例,下图是测试过程中的报错例子截图:

技术图片

下面贴出最后完成的测试代码:

 1 ‘‘‘test 计算器.py‘‘‘
 2 import unittest
 3 
 4 from 计算器 import *
 5 
 6 import htmlTestRunner
 7 
 8 class TestCaculator(unittest.TestCase):
 9     ‘‘‘test 计算器‘‘‘
10     def test_conversionFormula(self):
11         ‘‘‘test method conversionFormula‘‘‘
12         self.assertEqual([1, +, (, 2, +, 3, )], conversionFormula(1+(2+3)))
13         self.assertEqual([1, +, 2, *, 3], conversionFormula(1+2*3))
14         self.assertEqual(ERROR, conversionFormula(1(2,3)))
15         self.assertEqual(ERROR, conversionFormula(1,2,3))
16         self.assertEqual(ERROR, conversionFormula(1*(2++3)))
17         self.assertEqual(ERROR, conversionFormula(1*(2/0)))
18         self.assertEqual(ERROR, conversionFormula(a*(2+3)))
19         self.assertEqual(ERROR, conversionFormula(1/(2+3))))
20         self.assertEqual(ERROR, conversionFormula(!&@))
21         self.assertEqual(ERROR, conversionFormula(*2))
22         self.assertEqual(ERROR, conversionFormula(‘‘))
23         self.assertEqual(ERROR, conversionFormula(123))
24         self.assertEqual
25     def test_calculator(self):
26         ‘‘‘test method calculator‘‘‘
27         self.assertEqual(27,calculator([2,^,3,*,2,+,13,-,4,/,2]))
28         self.assertEqual(3,calculator([-,2,^,2,*,2,+,13,-,4,/,2]))
29         self.assertEqual(1,calculator([+,1]))
30         self.assertEqual(ERROR,calculator([*,2]))
31     def test_remove_racket(self):
32         ‘‘‘test method remove_racket‘‘‘
33         self.assertEqual([7.0], remove_bracket([-,(,2,-,3,*,(,1,+,2,),)]))
34         self.assertEqual([1, -, 7.0], remove_bracket([1,+,(,2,-,3,*,(,1,+,2,),)]))
35         self.assertEqual([-,5.0], remove_bracket([-,(,2,-,3,*,(,1,-,2,),)]))
36 def main():
37     filepath = F:/multisim/VsCode/软件工程学习/计算器单元测试、覆盖率测试/test_calculator_report.html
38     
39     ftp=open(filepath,wb)
40     suite = unittest.TestSuite()
41     suite.addTest(TestCaculator(test_conversionFormula))
42     suite.addTest(TestCaculator(test_calculator))
43     suite.addTest(TestCaculator(test_remove_racket))
44     runner=HTMLTestRunner.HTMLTestRunner(stream=ftp,title=test_caculator)
45     runner.run(suite)
46     
47 if __name__ == __main__:
48     main()
49     
50     # unittest.main(verbosity=2)

 测试过程中就对计算器程序进行了一些修改和完善,下面是测试完后的截图和html报告:

技术图片

技术图片下面是代码覆盖率测试代码,用的coverage库

import coverage
cov = coverage.Coverage()
cov.start()

import test_caculator
test_caculator.main()

cov.stop()
cov.save()
cov.html_report(directory=F:/multisim/VsCode/软件工程学习/计算器单元测试、覆盖率测试/计算器覆盖率报告)

同样可以生成html报告文档

技术图片  2、单词检索单元测试

单词检索的程序比较简单,没有很多的逻辑判断,所以测试的用例比较少,下面贴出测试代码:

 1 ‘‘‘测试ChapterTwoExercises.py‘‘‘
 2 import unittest
 3 
 4 from unittest import mock
 5 
 6 from ChapterTwoExercises import *
 7 
 8 import HTMLTestRunner
 9 
10 
11 class TestChapterTwoExercises(unittest.TestCase):
12     ‘‘‘测试 TxtHandle‘‘‘
13     def setUp(self):
14         self.txt_handle = TxtHandle(D:桌面eng2.txt, D:桌面query.txt)
15 
16     def test_init_query_file(self):
17         self.assertRaises(TypeError, TxtHandle, (1,D:桌面query.txt))
18         self.assertRaises(TypeError, TxtHandle, (D:桌面eng2.txt,2))
19     
20     def test_file_analysis(self):
21         self.txt_handle.file_analysis()
22         
23 
24     
25    
26 
27 def main():
28     filepath = F:/multisim/VsCode/软件工程学习/英文检索单元测试、覆盖率测试/test_ChapterTwoEx.html
29     ftp=open(filepath,wb)
30 
31     suite = unittest.makeSuite(TestChapterTwoExercises)
32     
33     # unittest.main(verbosity=2)
34     runner=HTMLTestRunner.HTMLTestRunner(stream=ftp,title=test_ChapterTwoEx)
35     runner.run(suite)
36     
37 if __name__ == __main__:
38     
39     main()
40     
41     
42     

覆盖率测试代码:

import coverage
cov = coverage.Coverage()
cov.start()

import test_game_map
test_game_map.main()

cov.stop()
cov.save()
cov.html_report(directory=F:/multisim/VsCode/软件工程学习/覆盖率测试)

单元测试报告和覆盖率测试报告和计算器的一个格式,就不贴出截图了。

计算器和单词检索程序的测试文件、测试报告、修改后的文件都已经打包成两个文件上传github:计算器单元测试、覆盖率测试英文检索单元测试、覆盖率测试

 

以上是关于对计算器和单词检索程序进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

四则运算单元测试

实验二 单元测试

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

实验二 单元测试

学习单元测试和代码覆盖率工具的使用

实验二