• 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

  • 相关阅读:
    sprinf sprintf_s 的用法
    c++中static的用法详解
    C++数值类型与string的相互转换
    setTimeout(function(){}, 0);
    学习 Node.js 的 6 个步骤
    $destroy——angular
    模态框——angular
    日期控件
    前端加密
    ui-router
  • 原文地址:https://www.cnblogs.com/leslie12956/p/11939740.html
Copyright © 2020-2023  润新知