一、实验内容:
对“输入的n个整数进行排序”的代码进行单元测试
二、设计单元测试用例
--基于Pycharm开发环境
--使用冒泡排序对列表进行升序排序
--利用unittest对所编写代码进行单元测试
测试代码如下:
import unittest
def line(num):
n = len(num)
for i in range(1, n):
for j in range(0, n - 1):
if num[i] < num[j]:
temp = num[i]
num[i] = num[j]
num[j] = temp
return num
class TestFun(unittest.TestCase):
def setUp(self):
print("测试1开始")
def test_line(self):
#测试1:空列表
self.assertEqual(line([]),[])
#测试2:一个元素的列表
self.assertEqual(line([5]),[5])
#测试3:已排好的列表
self.assertEqual(line([1,2,3,4]),[1,2,3,4])
#测试4:逆序的列表
self.assertEqual(line([4,3,2,1]),[1,2,3,4])
#测试5:包含重复元素的列表
self.assertEqual(line([3,2,1,3,2,1]),[1,1,2,2,3,3])
#测试6:随机顺序列表
self.assertEqual(line([8,5,7,4,6,1,3,2]),[1,2,3,4,5,6,7,8])
def tearDown(self):
print("测试1结束")
class TestFun2(unittest.TestCase):
def setUp(self):
print("测试2开始")
def test_line2(self):
self.assertEqual(line([20,5,8,1,3,4,6,7,2,9,15,14,18,13,16,12,17,19,11,10]),[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
def tearDown(self):
print("测试2结束")
if __name__=='__main__':
unittest.main()
生成报告代码如下:
import unittest
from Test import TestFun
from Test import TestFun2
from htmltestreport import HTMLTestReport
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestFun))
suite.addTest(unittest.makeSuite(TestFun2))
# 实例化HTMLTestReport对象
report_path = "report.html"
report = HTMLTestReport(report_path, title='单元测试报告', description='test函数测试报告V1.0')
# 执行测试套件
report.run(suite)
三、单元测试结果截图
四、实验中遇到的问题及解决方法
1.对排序函数结果的比较忘记设置返回值,使比较数据为空,导致测试失败,经改正解决。
2.设置的两个测试类错误的使用了相同的方法名导致测试错误,经改正解决。
3.设置的测试用例不能完全覆盖所有情况,经改正解决。
4.使用unittest生成测试报告时,由于只有一个测试类导致图表展示为空,设置两个测试类之后解决。
标签:self,num,实验,测试,assertEqual,line,unittest,软件测试 From: https://www.cnblogs.com/ariaZhang/p/18160328