• (三十九)Unittest单元测试框架之认识unittest-组织单元测试用例


    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

    组织单元测试用例

    当我们增加被测功能和相应的测试用例之后,再来看看unittest单元测试框架是如何扩展和组织新增的测试用例的。

    新建文件calculator.py文件

    #计算器
    class Count():
        def __init__(self,a,b):
            self.a = int(a)
            self.b = int(b)
    
        #计算加法
        def add(self):
            return self.a + self.b
    
        # 计算减法
        def add(self):
            return self.a - self.b

    因为对计算器(calculator)又新增了减法功能(sub),所以需要针对新功能编写测试用例,扩展后的test.py文件如下。

    import unittest
    from calculator import Count
    
    class TestAdd(unittest.TestCase):
        def setUp(self):
            print('test add start')
    
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
    
        def test_add2(self):
            j = Count(10,5)
            self.assertEqual(j.add(),15)
    
        def tearDown(self):
            print('test add end')
    
    
    class TestSub(unittest.TestCase):
        def setUp(self):
            print('test sub start')
    
        def test_sub(self):
            j = Count(3, 2)
            self.assertEqual(j.sub(), 1)
    
        def test_sub2(self):
            j = Count(10,5)
            self.assertEqual(j.sub(), 5)
    
        def tearDown(self):
            print('test sub end')
    
    #执行测试类的测试方法
    if __name__ == '__main__':
        #构造测试集
        suite = unittest.TestSuite()
        suite.addTest(TestAdd("test_add"))
        suite.addTest(TestAdd("test_add2"))
        suite.addTest(TestSub("test_sub"))
        suite.addTest(TestSub("test_sub2"))
    
        #运行测试集合
        runner = unittest.TextTestRunner()
        runner.run(suite)

    上例中创建了TestAdd()和TestSub()两个测试类,分别测试calculator.py文件中的add()和sub()两个功能。通过TestSuite类的AddTest()方法把不同测试类中的测试方法组装到测试套件中,执行结果如下:

    通过测试结果可以看到,setUp()和tearDown()方法分别作用于每个测试用例的开始与结束。如果每个类中的setUp()和tearDown()所做的事情时一样的,那是不是可以封装一个自己的测试类呢?

    import unittest
    from calculator import Count
    
    class MyTest(unittest.TestCase):
        def setUp(self):
            print('test case start')
    
        def tearDown(self):
            print('test case end')
    
    class TestAdd(MyTest):
    
        def test_add(self):
            j = Count(2,3)
            self.assertEqual(j.add(),5)
    
        def test_add2(self):
            j = Count(10,5)
            self.assertEqual(j.add(),15)
    
    
    class TestSub(MyTest):
        def setUp(self):
            print('test sub start')
    
        def test_sub(self):
            j = Count(3, 2)
            self.assertEqual(j.sub(), 1)
    
        def test_sub2(self):
            j = Count(10,5)
            self.assertEqual(j.sub(), 5)
    
        def tearDown(self):
            print('test sub end')
    
    #执行测试类的测试方法
    if __name__ == '__main__':
        unittest.main()

    运行结果:

    创建MyTest()类的好处显而易见,对于测试类和测试方法来说,应将注意力放在具体用例的编写上,无须关心setUp()和tearDown()所做的事情。不过,前提条件时setUp()和tearDown()所做的事情是每个用例都需要的。

  • 相关阅读:
    Vmware Vsphere WebService之vijava 开发一-vcenter连接、及集群信息获取
    Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习
    RabbitMQ安装以及java使用(二)
    redis单机安装以及集群搭建(redis-6.2.6)
    Spring Cloud Gateway中Filter获取Request Body的几种方式
    电子发票插入微信卡包之PDF上传
    Elasticsearch集群搭建详解
    微服务的设计原则
    centos 7.4 64位 mysql的安装
    RabbitMQ安装以及java使用(一)
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11505060.html
Copyright © 2020-2023  润新知