在Python中进行功能测试通常需要用到单元测试框架。常见的单元测试框架有unittest和pytest。下面我们以unittest框架为例,介绍如何进行Python功能测试。
一、安装unittest框架
unittest框架是Python自带的单元测试框架,因此不需要特别安装。
二、创建测试用例
在Python中,测试用例都是放在一个类中的,这个类继承unittest.TestCase类,测试用例则是以test_开头的方法。比如我们想要测试一个名为add的函数,我们需要创建一个test_add的测试用例:
import unittest
def add(a, b):
return a + b
class TestAdd(unittest.TestCase):
def test_add(self):
result = add(1, 2)
self.assertEqual(result, 3)
三、运行测试用例
运行测试用例的方式也不难,我们只需要在终端中进入项目目录,然后运行以下命令即可:
python -m unittest test_add.py
四、测试报告
为了更好地查看测试结果,我们需要生成测试报告。unittest框架内置了HTMLTestRunner模块,可以方便地生成HTML格式的测试报告。我们只需要在Python文件所在目录创建一个test_report文件夹,然后运行以下命令即可生成测试报告:
import unittest
import HTMLTestRunner
import os
def add(a, b):
return a + b
class TestAdd(unittest.TestCase):
def test_add(self):
result = add(1, 2)
self.assertEqual(result, 3)
if __name__ == '__main__':
# 定义测试用例集合
suite = unittest.TestSuite()
suite.addTest(TestAdd("test_add"))
# 定义测试报告存放路径,支持相对路径
dir = os.getcwd() + "/test_report"
filename = dir + "/result.html"
fp = open(filename, 'wb')
# 执行测试并生成测试报告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title="add函数功能测试报告", description="详细测试结果如下:")
runner.run(suite)
以上就是在Python中使用unittest框架进行功能测试的完整攻略。另外,下面附上一个测试用例:
def max_number(nums):
if not nums:
return None
return max(nums)
class TestMaxNumber(unittest.TestCase):
def test_max_number(self):
self.assertEqual(max_number([1, 2, 3, 4]), 4)
self.assertEqual(max_number([-1, -2, -3, -4]), -1)
self.assertEqual(max_number([1]), 1)
self.assertEqual(max_number([]), None)
这个测试用例用于测试一个函数max_number,这个函数的功能是返回数列中的最大值。测试用例中测试了4种情况,分别是数列非空且有多个元素、数列非空且所有元素为负数、数列只有一个元素和数列为空。通过这个测试用例,我们可以非常全面地验证max_number函数的正确性。