ICode9

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

unittest讲解

2022-07-04 01:00:59  阅读:191  来源: 互联网

标签:runner unittest TestCase 讲解 test suite self


unittest核心要素

  • TestCase
  • TestSuite
  • TextTestRunner
  • defaultTestLoader
  • Fixture

TestCase

说明:(翻译:测试用例)一个TestCase就是一条测试用例;

使用:
    1. 导包:import unittest             --> 导入unitest框架
    2. 继承:unittest.TestCase             --> 新建测试类继承unittest.TestCase

提示:
    1). 测试用例:在自动化测试中,一条用例就是一个完整的测试流程;                
    2). 测试方法名称命名必须以test开头;
       (原因:unittest.TestCase类批量运行的方法是搜索执行test开头的方法)

TestSuite

说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite
返回的suite套件原理:suite = unittest.TestSuite(map(UserCase,['testAddUser','testDelUser']))

使用:
    1. 实例化:     suite=unittest.TestSuite()                    
                 (suite:为TestSuite实例化的名称)
    2. 添加用例:suite.addTest(ClassName('MethodName'))    
                 (ClassName:为类名;MethodName:为方法名)
                suite.addTests([ClassName('MethodName1'),ClassName('MethodName1')])  

    3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName))
                 (搜索指定ClassName内test开头的方法并添加到测试套件中)

TextTestRunner

说明:(翻译:测试执行)是用来执行测试用例套件(执行上面的测试套件)

使用:
    1. 实例化: runner=unittest.TextTestRunner()
                (runner:TextTestRunner实例化名称)
    2. 执行:    runner.run(suite)  返回unittest.TestResult 对象,可以查看成功次数,失败次数等
                (suite:为测试套件名称)```
    unittest.TextTestRunner(stream=open("./tex.text",'w'),descriptions=True, verbosity=1)
    stream : 写入的文件对象
    descriptions : 描述信息
    verbosity: 写入文件的详细程度(0,1,2)

HTMLTestRunner(生成测试报告)

生成html测试报告

from HTMLTestRunner import HTMLTestRunner

with open(r'test_report.html', 'wb') as f:  # => 必须以wb的方式打开
    runner = HTMLTestRunner(
        stream=f,  # => 可写的文件对象
        title='add函数测试报告',  # => 测试报告标题
        description='win 10, python 3.8', # => 对本次测试的描述
    )
    runner.run(tests)  # => tests是通过discover查找并构建的测试套件

运行报告如下:

Beautiful Report

生成测试报告

from BeautifulReport import BeautifulReport

runner = BeautifulReport(tests)  # => tests是通过discover查找并构建的测试套件
runner.report(
    description='add函数测试报告',  # => 报告描述
    filename='bf.html',  # => 生成的报告文件名
    log_path='.'  # => 报告路径
)


实例验证
## test_bb.py
import unittest
class TestCase(unittest.TestCase):
    def test_01(self):
        print(f'运行用例{self.id()}')

    def test_02(self):
        print(f'运行用例{self.id()}')

    def test_03(self):
        print(f'运行用例{self.id()}')

if __name__ == '__main__':
    print(dir(TestCase))
## test_login.py
import unittest
class TestLogin(unittest.TestCase):
      def test_login1(self):
        print(f'运行用例{self.id()}')
        pass
    def test_login2(self):
        print(f'运行用例{self.id()}')
        pass
    def test_login3(self):
        print(f'运行用例{self.id()}')
        pass
    def test_login4(self):
        print(f'运行用例{self.id()}')
        pass
## mian.py
from test_bb import TestCase
from test_login import TestLogin
suite = unittest.TestSuite()
suite.addTest(TestCase('test_01'))
suite.addTests([TestCase('test_02'),TestCase('test_03')])
suite.addTest(unittest.makeSuite(TestLogin))
runner = unittest.TextTestRunner()
runner.run(suite)

defaultTestLoader

说明: 本质就是利用TestLoader类的相关方法找到testcase或者suite,并将查找到的测试用例组装到测试套件

  • discover方法

用法:
    test_dir = './'
    disconver = unittest.defaultTestLoader.discover(test_dir, pattern='iweb_*.py')
    (test_dir为要指定的目录 ./为当前目录;pattern:为查找的.py文件的格式 )
运行:
    runner=unittest.()
    runner.run(disconver)
  • loadTestsFromTestCase(testCaseClass)
用法:
 testCaseClass必须是TestCase的子类(或孙类也行)
运行:
    suite = unittest.defaultTestLoader.loadTestsFromTestCase(testCaseClass)
    runner=unittest.TextTestRunner()
    runner.run(suite)
  • loadTestsFromModule(module, pattern=None)
用法:
name是一个string,string需要是是这种格式的“module.class.method”
运行:
    suite = unittest.defaultTestLoader.loadTestsFromModule(module, pattern=None)
    runner=unittest.TextTestRunner()
    runner.run(suite)
  • loadTestsFromNames(name, module=None)
用法:
names是一个list,用法与上同
运行:
    suite = unittest.defaultTestLoader.loadTestsFromModule(module, pattern=None)
    runner=unittest.TextTestRunner()
    runner.run(suite)

标签:runner,unittest,TestCase,讲解,test,suite,self
来源: https://www.cnblogs.com/kxtomato/p/16441455.html

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

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

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

ICode9版权所有