zoukankan      html  css  js  c++  java
  • python中的单元测试模块unittest

    unittest的属性:

      该文以思维导图的形式描述unittest的重要属性。

     

    其中前四个是unittest最核心的三个属性。

    testcase:测试用例;

    testsuite:测试套件,多个测试用例组成一个测试套件;

    test runner:执行测试用例,该类中的run()方法会执行testsuite/testcase中的run()方法。测试的结果会保存在testresult中。

    还有一个很重要的就是fixture,看着是挺陌生的,其实就是一个测试用例执行之前环境的准备和执行之后环境的销毁。

    三、实例:

    首先准备一些待测方法,functions.py:

    def fun_div(x):
    return x/2

    def fun_add(x):
    return x+2

    def fun_minus(x):
    return x-2

    def fun_multi(x):
    return x*2
    接下来写一些测试用例来测这些方法,test.py

    import unittest
    from functions import fun_add,fun_minus,fun_multi,fun_div


    class TestFun(unittest.TestCase):
    times = 0

    @classmethod
    def setUpClass(cls):
    print('setUpclass')

    def setUp(self):
    # 每个测试用例执行之前都会执行该方法
    TestFun.times += 1
    print('setUp', TestFun.times)

    def tearDown(self):
    # 每个测试用例执行之后都会执行该方法
    TestFun.times += 1
    print('tearDown', TestFun.times)

    def test1(self):
    # 测试用例1:fun_div
    # 使用unittest提供的断言验证functions中的函数的正误
    # 如果不相等就会失败
    self.assertEqual(2, fun_div(4))
    self.failUnlessEqual(2, 2)

    # 如果表达式为False,测试失败
    self.assertTrue(1 < 2)
    self.failUnless(2 == 2)
    # 如果两个值相等,就会测试失败
    self.assertNotEqual(2, 1)
    def test2(self):
    # 测试用例2:fun_add
    self.assertNotEqual(2, 1)
    def test2(self):
    # 测试用例2:fun_add
    self.assertTrue(fun_add(6) == 8)
    def test3(self):
    # 测试用例3:fun_minus
    self.assertNotEqual(6, fun_minus(6))
    self.assertEqual(4, fun_minus(6))
    def test4(self):
    # 测试用例4:fun_multi
    self.assertIsInstance(4, int)
    self.assertEqual(8, fun_multi(4))
    @unittest.skipIf(True, 'no')
    def test5(self):
    print('跳过!')
    @classmethod
    def tearDownClass(cls):
    print('tearDownClass')
    if __name__ == '__main__':
    # unittest.main()
    suit = unittest.TestSuite()
    suit.addTest(TestFun('test1'))
    suit.addTest(TestFun('test2'))
    suit.addTest(TestFun('test3'))
    suit.addTest(TestFun('test4'))
    runner = unittest.TextTestRunner()
    runner.run(suit)
    执行结果:

    解释:

    1、setUp和tearDown是每个用例的环境准备和环境销毁函数,也就是在每个用例执行之前要执行一次setUp函数,每个用例执行之后会执行一次tearDown函数;

    2、setUpClass和tearDownClass是所有用例的环境准备和环境销毁函数,也就是说,在这么多用例执行之前只会执行一次setUpClass函数,执行之后会执行一次tearDownClass函数,举例来说,比如此次测试用例需要使用数据库,那么在setUpClass函数中就会进行数据库连接,在tearDownClass函数中进行数据库断开;

    3、一般执行测试用例,都会使用testsuit的addTest()方法将要执行的用例放在一个测试套件中,创建一个testrunner对象,然后调用该对象的run()方法;

    4、skip是一个装饰器,可以屏蔽一些测试用例,此功能可以用于调试测试用例。(大型项目中,执行所有的用例需要用很久的时间,但是我们刚好需要调试某个用例,就可以把其他的用例屏蔽掉);

    5、一个测试用例类都会继承于TestCase类;

    6、测试用例报告可以使用TextTestRunner输出(txt报告),也可以用HTMLTestRunner输出(html报告)。
    ————————————————
    版权声明:本文为CSDN博主「peiyao456」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/peiyao456/article/details/81542377

  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/leslie12956/p/11939740.html
Copyright © 2011-2022 走看看