欢迎访问宙启技术站
智能推送

使用TestCase()测试函数在不同输入情况下的性能表现

发布时间:2023-12-23 01:18:26

TestCase() 是 Python 中的一个测试框架,用于编写和运行测试用例。它提供了丰富的断言方法,用于判断测试结果是否符合预期。针对函数的性能测试,可以使用 time 模块来计算函数的执行时间。下面是一个例子,展示如何使用 TestCase() 来测试函数在不同输入情况下的性能表现。

假设我们要测试一个函数,该函数接受一个列表作为参数,返回列表中所有偶数的平均值。下面是一个简单的实现:

def average_even_numbers(numbers):
    evens = [num for num in numbers if num % 2 == 0]
    if len(evens) == 0:
        return 0
    return sum(evens) / len(evens)

现在我们使用 TestCase() 来测试这个函数的性能。

import time
import unittest

class TestAverageEvenNumbers(unittest.TestCase):
    
    def test_average_even_numbers(self):
        numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        numbers2 = list(range(1, 10001))
        numbers3 = list(range(1, 1000001))
        
        start_time = time.time()
        result1 = average_even_numbers(numbers1)
        end_time = time.time()
        print("Average even numbers in {} is {}, execution time: {} seconds.".format(numbers1, result1, end_time - start_time))
        
        start_time = time.time()
        result2 = average_even_numbers(numbers2)
        end_time = time.time()
        print("Average even numbers in large list is {}, execution time: {} seconds.".format(result2, end_time - start_time))
        
        start_time = time.time()
        result3 = average_even_numbers(numbers3)
        end_time = time.time()
        print("Average even numbers in larger list is {}, execution time: {} seconds.".format(result3, end_time - start_time))

if __name__ == '__main__':
    unittest.main()

在这个例子中,我们使用了三个不同大小的输入列表进行性能测试。首先,我们定义了一个包含从 1 到 10 的整数的列表 numbers1,然后使用 TestCase() 的 assertEqual() 方法来断言 average_even_numbers(numbers1) 返回的结果是否等于预期值。随后,我们使用 time 模块来计算函数的执行时间,并打印出结果。

在运行测试时,我们可以看到每个测试用例的平均值以及函数的执行时间。这样就可以评估函数在不同输入情况下的性能表现。

总结起来,使用 TestCase() 可以方便地编写和运行测试用例,并通过添加计时器来测试函数在不同输入情况下的性能表现。这有助于优化和改进函数的实现,以提高性能。