unittest笔记总结

 1、导包:import unittest

unittest python自带测试框架,直接导入
测试用例需继承unittest.TestCase
测试用例方法要以test开头

#calc.py
class count:
     def __init__(self,a,b):
         self.a=a
         self.b=b
     def add(self):
         return self.a + self.b
     def sub(self):
         return self.a - self.b
import unittest
from unitte.calc import count
'''
unittest python自带测试框架,直接导入
测试用例需继承unittest.TestCase
测试用例方法要以test开头
'''
#测试用例
class Count(unittest.TestCase):
    #测试用例(方法名以test开头):加法
    def test_add(self):
        # 调用方法
        c1=count(5,6)
        r=c1.add()
        #测试:将实际结果和需求结果作比较
        #断言
        # self.assertEqual(r,12)
        self.assertEqual(r, 11)

    def test_sub(self):
        c2=count(6,3)
        r=c2.sub()
        # 断言
        self.assertEqual(r,4)
if __name__ == '__main__':
    # 执行这个类下的测试用例
    Count.main()

 

 unittest模块说明

 

unittest 是 Python 自带的单元测试框架,主要部分有: 

TestCase:用户自定义的测试用例的基类。调用 run() 方法,会依次调用 setUp()方法(搭建环境)、执行用例的run()方法、tearDown() 方法(还原测试环境)。

TestSuite:测试用例集合,测试多个用例,支持测试用例的添加和删除,最终将传递给 TestRunner 进行测试执行。

TestRunner 和 TextTestRunner:运行测试用例的驱动类。可以执行 TestCase,也可以执行 TestSuite,执行后 TestCase 和 TestSuite 会自动管理 TestResult。

TestFixture:对一个测试用例环境的初始化和清除。通过覆盖TestCase的setUp()和tearDown()方法实现。

TestLoader:测试加载器。TestLoader 负责根据各种各样的规则收集测试用例,并把这些测试用例包装在一个 TestSuite 中。

常见的断言方式

assertEqual(值1,值2):如果两值相等,则测试通过

assertNotEqual(值1,值2):如果两值不相等,则测试通过

assertTrue(返回值(true/false),msg="xxx通过/不通过"):如果两值相等,则测试通过

assertIn(r,new_names):判断第一个参数是否在第二个参数里面,在则测试通过

assertNotIn(r,new_names):判断第一个参数是否在第二个参数里面,不在则测试通过

初始化和清除的使用

模块级别:setUpModule():初始化--模块的开始调用【类前定义】

                  tearDownModule():清除---模块的结尾调用【类前定义】

类级别:setUpClass 初始化--类的开始调用

# 类级别的初始化
    @classmethod
    def setUpClass(cls) -> None:
        print("---------------这是setUpClass------------------")
tearDownClass 清除---类的结尾调用
# 类级别的清除
    @classmethod
    def tearDownClass(cls) -> None:
            print("---------------这是tearDownClass------------------")

用例级别:setUp 初始化--用例的开始调用

                  tearDown 清除---用例的结尾调用【针对于单个用例的清除】

import unittest
from unitte.calc import count
'''
unittest python自带测试框架,直接导入
测试用例需继承unittest.TestCase
测试用例方法要以test开头
'''
#模块的初始化
def setUpModule():
    print("---------------这是setUpModule------------------")
# 模块的清除
def tearDownModule():
    print("---------------这是tearDownModule()------------------")
#测试用例
class Count(unittest.TestCase):
    # 类级别的初始化
    @classmethod
    def setUpClass(cls) -> None:
        print("---------------这是setUpClass------------------")

    # 类级别的清除
    @classmethod
    def tearDownClass(cls) -> None:
            print("---------------这是tearDownClass------------------")
    # 用例级别初始化
    def setUp(self) -> None:
        print("---------------这是setUp------------------")
    # 用例级别的清除
    def tearDown(self) -> None:
        print("---------------这是tearDown------------------")
    #测试用例(方法名以test开头):加法
    def test_add(self):
        print("----------这是test_add-----------")
        # 调用方法
        c1=count(5,6)
        r=c1.add()
        #测试:将实际结果和需求结果作比较
        #断言
        # self.assertEqual(r,12)
        self.assertEqual(r, 11)

    def test_sub(self):
        print("---------------这是test_sub------------------")
        c2=count(6,3)
        r=c2.sub()
        # 断言
        self.assertEqual(r,4)
if __name__ == '__main__':
    # 执行这个类下的测试用例
    Count.main()

创建测试套件:

方法1:可以通过addTest()加载TestCase到TestSuite中。 用于少量测试
import unittest
from unitte.utest import Count
'''
通过执行器执行之后 一个点 代表通过一条测试用例 不通过为F
'''
#方法1:可以通过addTest()加载TestCase到TestSuite中。 用于少量测试
#创建套件测试
suite=unittest.TestSuite()

#给测试套件添加测试用例
suite.addTest(Count('test_add'))
suite.addTest(Count('test_sub'))
#创建执行器
runner=unittest.TextTestRunner()
#用执行器执行测试套件
runner.run(suite)

 方法2:用列表添加测试用例

import unittest
from unitte.utest import Count

#创建套件测试
suite=unittest.TestSuite()
#给测试套件添加测试用例
cases=[Count('test_add'),Count('test_sub')]
#addTest可以接受一个列表
suite.addTests(cases)
#使用执行器
runner=unittest.TextTestRunner()
runner.run(suite)

方法3:添加整个类中的测试用例到套件中

#方法3:添加整个类中的测试用例到套件中
import unittest
from unitte.utest import Count
#创建套件测试
suite=unittest.TestSuite()
#给测试类添加测试用例
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Count))

#使用执行器
runner=unittest.TextTestRunner()
runner.run(suite)

方法4:路径加载 模糊匹配

#模糊匹配
import unittest
#加载路径 ./为根目录下的文件
casepath = "../unitte"
#指定匹配的规则,会自动生成测试套件,将用例添加进去 start_dir 开始路径,pattern='ute*.py' 匹配规则
suite = unittest.defaultTestLoader.discover(start_dir=casepath,pattern='ute*.py')
#使用执行器
runner=unittest.TextTestRunner()
runner.run(suite)

测试跳过

@unittest.skip("该用例未开发完成 跳过") 【无条件跳过 在测试套件里显示为s】

@unittest.skipIf(5>4,"true跳过,false跳过")【有条件跳过 】

@unittest.skipUnless(3>4,"测试") 【无论结果如何都是失败】

@unittest.expectedFailure("功能未能实现")【如果断言失败,不计入执行case数目中】

生成测试报告

import unittest
import time
import os
from common.HTMLTestRunner import HTMLTestRunner
#测试报告存放路径
report_path="./report/"
#测试报告标题
report_title = "冒烟测试"
#测试描述
report_desc="功能测试"
#判断 如果有report目录则直接使用,没有则创建
if not os.path.exists(report_path):
    #没有则创建
    os.mkdir(report_path)
#构建获取时间日期,作为报告名字,避免重复
gettime=time.strftime("%Y%m%d%H%M%S")
#构建测试报告存放路径和名字 f文件
filepath=report_path+f"report{gettime}.html"
#执行测试,生成测试报告
#执行加载用例的路径
case_path="../unitte"
#模糊匹配
suite=unittest.defaultTestLoader.discover(start_dir=case_path,pattern='ut*.py')
with open(filepath,"wb") as f1:
    #使用HTMLTestRunner
    '''
    第一个参数:生成报告给那个文件写入
    第二个参数:测试用例标题
    第三个参数:对一次测试的描述
    '''
    runner=HTMLTestRunner(f1,title=report_title,description=report_desc)
    #执行测试套件
    runner.run(suite)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值