• unittest简单介绍


    1、unittest简介

    UnitTest是Python自带的一个单元测试框架,用它来做单元测试。也经常应用到UI自动化测试和接口自动化测试中,用来管理和维护测试用例脚本

    使用UnitTest框架的好处
    1. 能够组织多个用例去执行(可以把多条测试用例封装成一个测试套件,实现批量执行测试用例)
    2. 提供了丰富的断言方法,方便对用例执行的结果进行判断
    3. 能够生成HTML格式的测试报告
    4. 使用Fixture功能可以减少代码的冗余

    UnitTest核心要素:
    TestCase:通过继承TestCase类,我们可以创建一个test,或者一组tests
    TestFixtures:setup + test_case + teardown结构
    TestSuite:测试套件:多条测试用例集合在一起,就是一个TestSuite使用
    TestRunner:TextTestRunner是用来执行测试用例和测试套件的

     2、TestCase

    如何定义测试用例
    1.导包:import unittest
    2.定义测试类:新建测试类必须继承unittest.TestCase
    3.定义测试方法:测试方法名称命名必须以test开头

    如何执行测试用例
    方式一:使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行
    方式二:调用unittest.main()来运行

     

     3、TextFixture

    Fixture是一个概述,对一个测试用例环境的初始化和销毁就是一个Fixture。

    方法级别使用:
    1.初始化 ( 前置处理 ):def setUp(self) --> 首先自动执行
    2. 销毁 ( 后置处理 ):def tearDown(self) --> 最后自动执行
    3. 运行于测试方法的始末,即:运行一次测试 方法就会运行一次 setUp 和 tearDown
    类级别使用:
    1.初始化 ( 前置处理 ):@classmethoddef setUpClass(cls): --> 首先自动执行
    2. 销毁 ( 后置处理 ):@classmethoddef tearDownClass(cls): --> 最后自动执行
    3. 运行于测试类的始末,即:每个测试类只会 运行一次 setUpClass 和 tearDownClass

     4、TestSuite和TestRunner

    TestSuite的使用
    实例化:suite=unittest.TestSuite() (suite:为TestSuite实例化的名称)
    添加用例:suite.addTest(ClassName(“MethodName”))(ClassName:为类名;MethodName:为方法名)
    添加扩展:suite.addTest(unittest.makeSuite(ClassName))(搜索指定ClassName内test开头的方法并添加到测试套件中)
    提示:TestSuite需要配合TestRunner才能被执行

    TextTestRunner的使用
    1.实例化:runner=unittest.TextTestRunner()
    2.执行:runner.run(suite)#suite:为测试套件名称

     5、断言

    什么是断言?
    概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程。UnitTest 中提供了非常丰富的断言方法,但是常用的也就那么几个,并且使用起来也比较简单

    6、参数化

    UnitTest 参数化
    通过参数的方式来传递数据,从而实现数据和脚本分离,也可以把测试数据定义到数据文件或者数据库中。

    针对同一个测试方法,可以实现用例的重复执行,减少代码冗余,提高测试效率。

    unittest测试框架,本身不支持参数化,但是可以通过安装 unittest 扩展插件parameterized 来实现。

    parameterized 使用方式
    导包:from par ameterized import par ameterized

    使用@parameterized.expand 装饰器可以为测试函数的参数进行参数化

     7、跳过用例

    在执行测试用例时,有时候有些用例是不需要执行的,那我们怎么办呢?
    难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作就太麻烦了。
    unittest提供了一些跳过指定用例的方法
    @unittest.skip(reason):强制跳转。reason是跳转原因
    @unittest.skipIf(condition, reason):condition为True的时候跳转
    @unittest.skipUnless(condition, reason):condition为False的时候跳转
    @unittest.expectedFailure

    8、生成HTML报告

    测试脚本执行完后,可以生成以 HTML( 网页 ) 格式的测试报告
    为什么要生成测试报告?
    (1)测试报告是本次测试结果的体现形态
    (2)测试报告内包含了有关本次测试用例的详情

    使用HTMLTestRunner 生成测试报告
    使用方法:
    1.复制 HTMLTestRunner.py 文件到项目文件夹
    2. 导入 HTMLTestRunner 、 unittest 包 
    3. 生成测试套件suite = unittest.TestSuite() 
    suite.addTest(TestAdd("test_01"))
    4. 设置报告生成路径和文件名 file_name = "./report/report.html“
    5. 打开报告 with open(file_name,'wb') a s f:
    6 . 实例化 HTMLTestRunner 对象: runner = HTMLTestRunner(stream=f,[title],[description])

    参数说明:

    stream :文件流,打开写入报告的名称及 写入编码格式 ) 
    title : [ 可选参数 ] ,为报告标题 
    description : [ 可选参数 ] ,为报告描 述信息
    7. 执行: runner.run(suite)

     

     注:执行测试报告的文件应该写在run.py文件里,不能写在test_*文件里,否则无法生成报告。

  • 相关阅读:
    vue组件系列-数字滚动组件
    重新振兴自己
    EL表达式
    org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette
    Struts2常用标签总结
    mybatis+strut2+spring整合总结
    hibernate的详细注解以及例子
    Struts2基于注解的Action配置
    【干货】如何通过OPC自定义接口来实现客户端数据的读取?
    即将离职,共享下我的知识库
  • 原文地址:https://www.cnblogs.com/crystal1126/p/12743789.html
Copyright © 2020-2023  润新知