0


Python高级用法:使用unittest进行单元测试

前言

Python中含有一个单元测试模块unittest,我们可以使用其中的工具来测试代码。在编写测试用例后,可以查看一系列输入是否得到了预期的输出。单元测试专注于测试软件单元,软件单元可以被理解为应用程序代码的最小可测试部分。

代码

import unittest

defis_prime(number):if number <0or number in(0,1):returnFalsefor element inrange(2, number):if number % element ==0:returnFalsereturnTrueclassMyTests(unittest.TestCase):deftest_is_prime(self):
        self.assertTrue(is_prime(5))
        self.assertTrue(is_prime(7))
        self.assertFalse(is_prime(8))
        self.assertFalse(is_prime(0))
        self.assertFalse(is_prime(1))
        self.assertFalse(is_prime(-1))
        self.assertFalse(is_prime(-3))
        self.assertFalse(is_prime(-6))if __name__ =="__main__":
    unittest.main()

在代码中我们需要测试的是一个数字是否为质数的函数

is_prime

。使用unittest进行单元测试时首先要创建一个

unittest.TestCase

的子类(这里是MyTests),随后调用

unittest.main()

后会自动调用这个子类当中的类方法去进行测试。

在类方法中使用的

assertTrue

assertFalse

是一种断言的方式,用来判断返回值是否为True或False。其他的断言方式有
方法用途assertEqual(a, b)核实a == bassertNotEqual(a, b)核实a != bassertTrue(x)核实x 为TrueassertFalse(x)核实x 为FalseassertIn(item , list )核实 item 在 list 中assertNotIn(item , list )核实 item 不在 list 中
运行结果如下:

Ran 1 test in 0.001s

OK

旧的使用方式

在以往的Python中,有这样一个约定,测试模块提供一个test_suite函数,该函数返回一个TestSuite实例,当模块被命令提示符调用或被测试运行器使用时,在__main__部分会调用它。

import unittest

defis_prime(number):if number <0or number in(0,1):returnFalsefor element inrange(2, number):if number % element ==0:returnFalsereturnTrueclassPrimesTests(unittest.TestCase):deftest_is_prime(self):
        self.assertTrue(is_prime(5))
        self.assertTrue(is_prime(7))
        self.assertFalse(is_prime(8))
        self.assertFalse(is_prime(0))
        self.assertFalse(is_prime(1))
        self.assertFalse(is_prime(-1))
        self.assertFalse(is_prime(-3))
        self.assertFalse(is_prime(-6))classOtherTests(unittest.TestCase):deftest_true(self):
        self.assertTrue(True)deftest_suite():"""构建测试套件"""
    suite = unittest.TestSuite()
    suite.addTests(unittest.makeSuite(PrimesTests))
    suite.addTests(unittest.makeSuite(OtherTests))return suite

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

在上述代码中构建了一个测试套件

test_suite

,其中构建了一个unittest.TestSuite()的类的实例化,随后将两个待测试的方法添加到这个实例化的对象中。

运行结果

Ran 2 tests in0.001s

OK

本文转载自: https://blog.csdn.net/DuLNode/article/details/135495010
版权归原作者 艾醒(AiXing-w) 所有, 如有侵权,请联系我们删除。

“Python高级用法:使用unittest进行单元测试”的评论:

还没有评论