ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

unittest相关内容

2021-10-13 08:31:26  阅读:131  来源: 互联网

标签:unittest 测试用例 内容 suite test 相关 执行 def


一、unittest介绍与使用

1.作用

用于单元测试(功能函数,类)、用例的管理、用例的加载、用例的执行、测试报告的生成。

2.组件

TestCase:定义测试用例

TestSuite:测试套件,用于管理测试用例

TestRunner:运行测试用例

TestLoader:加载测试用例

Fixture:想当于钩子,用户测试用例执行前后进行执行。

3.为什么要使用Unittest框架?

能够组织多个用例去执行

提供丰富的断言方法

能够生成测试报告(由于生成的测试报告简陋,我们选择其他插件实现)

4.Fixture

Fixture是一个概述,对一个测试用例环境的初始化和销毁就是一个Fixture。以开发视角去理解,Fixture就像是Flask框架中的钩子,特定的方法,在测试用例执行前后进行执行。

Fixture存在控制级别:不同的级别决定了执行的作业范围和时机

方法级别:在执行测试类中的每一个测试用例之前,都会执行一遍setUp()方法,执行完每一条测试用例,都会执行一遍tearDown()方法。

类级别:在整个测试类里面所有的测试用例执行之前,执行一次setUpClass(cls),所有的用例执行完之后,统一执行一次tearDownClass(cls) 。

模块级别:

-初始化(前置处理):def setUpModule() --> 首先自动执行

-销毁(后置处理):def tearDownModule() --> 最后自动执行

运行于整个模块的始末,即:整个模块只会运行一次 setUpModule 和 tearDownModule

 

5.运行用例

      首先在pycharm中新建文件夹及文件,在mytest文件中,用Fixture方法级别写入:

# 导包
import unittest
 
# 待测函数
def two_he(a,b):
    return a + b
 
# 测试类:方法-->测试用例
# 注意事项:
#         -测试类,必须继承unittest.TestCase
#         -测试用例:就是方法,方法必须以test开头
class BdTestClass(unittest.TestCase):
    def setUp(self):
        print("sutup方法执行啦!")
        print("test_1")
 
    def tearDown(self):
        print("tearDown方法执行啦!")
        print("test_2")
 
    # 测试用例
    def test_1(self):
        # 调用待测函数
        two_he(1,2)
 
    def test_2(self):
        two_he(7,5)

 

 在two文件中写入:

# 导包
import unittest
 
# 待测函数
def th_he(a,b,c):
    return a + b
 
# 测试类:方法-->测试用例
# 注意事项:
#         -测试类,必须继承unittest.TestCase
#         -测试用例:就是方法,方法必须以test开头
class ShTestClass(unittest.TestCase):
    # 测试用例
    def test_1(self):
        # 调用待测函数
        th_he(1,2,3)
 
    def test_2(self):
        th_he('abc',5,6)

 

最后在main函数中写入:

# 1、导包
# 2、创建测试类,写测试用例
# 3、加载用例:
    # 3.1 实例化一个测试套件用于加载测试用例:suite = unittest.TestSuite()
    # 3.2 加载用例
                    # -addTest(模块名.类名("方法名"))
                    # -addTest(unittest.makeSuite(mytest.BdTestClass))
                    # -suite = unittest.TestLoader().discover('路径','文件名+通配符')
# 4、执行测试用例
    # 4.1 借助一个runner对象:runner = unittest.TextTestRunner()
    # 4.2 runner对象调用run方法,传递测试套件(suite)来执行
 
import unittest
from project03.myinfrom.case import mytest
 
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(mytest.BdTestClass))
 
# suite = unittest.TestLoader().discover('D:/p6课堂练习/project03/myinfrom/case','*test.py')
runner = unittest.TextTestRunner()
runner.run(suite)

 

方法级别运行结果:

 

在mytest文件中,用Fixture类级别写入:

# 导包
import unittest
 
# 待测函数
def two_he(a,b):
    return a + b
 
# 测试类:方法-->测试用例
# 注意事项:
#         -测试类,必须继承unittest.TestCase
#         -测试用例:就是方法,方法必须以test开头
class BdTestClass(unittest.TestCase):
    # def setUp(self):
    #     print("sutup方法执行啦!")
    #     print("test_1")
    #
    # def tearDown(self):
    #     print("tearDown方法执行啦!")
    #     print("test_2")
    @classmethod
    def setUpClass(cls):
        print('setUpclass running!')
 
    @classmethod
    def tearDownClass(cls):
        print('tearDownclass running!')
 
    # 测试用例
    def test_1(self):
        # 调用待测函数
        two_he(1,2)
 
    def test_2(self):
        two_he(7,5)

 

类级别用不到two文件

最后在main函数中写入:

# 1、导包
# 2、创建测试类,写测试用例
# 3、加载用例:
    # 3.1 实例化一个测试套件用于加载测试用例:suite = unittest.TestSuite()
    # 3.2 加载用例
                    # -addTest(模块名.类名("方法名"))
                    # -addTest(unittest.makeSuite(mytest.BdTestClass))
                    # -suite = unittest.TestLoader().discover('路径','文件名+通配符')
# 4、执行测试用例
    # 4.1 借助一个runner对象:runner = unittest.TextTestRunner()
    # 4.2 runner对象调用run方法,传递测试套件(suite)来执行
 
import unittest
from project03.myinfrom.case import mytest
 
# suite = unittest.TestSuite()
# suite.addTest(unittest.makeSuite(mytest.BdTestClass))
 
suite = unittest.TestLoader().discover('D:/p6课堂练习/project03/myinfrom/case','*test.py')
runner = unittest.TextTestRunner()
runner.run(suite)

 

类级别运行结果为:

 

    6.总结:

必须继承unittest.TestCase类,setUp、tearDown才是一个Fixture;

setUp,tearDown:如果一个类中有多个测试用例,每执行一个测试用例之前会调用一次setup,之后会调用一次tearDown;

setUpClass,tearDownClass:如果一个类中有多个测试用例,执行所有测试用例之前只会调用一次setUpClass之后只会调用一次tearDownClass;

setUpModule,tearDownModule:只在import导入这个模块时会调用一次setUpModule,模块使用完成之后会调用一次tearDownModule;

setUpXXX:一般做初始化工作;

tearDownXXX:一般做结束工作;

 

标签:unittest,测试用例,内容,suite,test,相关,执行,def
来源: https://www.cnblogs.com/lyt-213/p/15400462.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有