• unittest测试框架 (上)


    目录

    • 一、unittest(python自带测试框架)简介(重要的概念)
    • 二、断言方法
    • 三、discover更多测试用例
    • 四、用例执行的顺序
    • 五、执行多级目录的用例
    • 六、跳过测试和预期失败
    • 七、编写WEB测试用例 

    一、什么是框架?

    提供用例组织与执行

    • 大量的用例堆砌在一起,就产生了扩展性与维护性等问题,需要考虑用例的规荡与组织问题。

    提供丰富的比较方法

    • 用例执行完成之后,需要将实际结果与预期进行比较,从而断定用例是否执行通过。

    提供丰富的执行日志

    • 当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。

    重要的概念

    1.Test Case

    一个TestCase的实例就是一个测试用例。(一个完整的测试流程)

    包括:

    • 测试前准备环境的搭建(setUp)
    • 实现测试过程的代码(run)
    • 测试后环境的还原(tearDown)

    2.Test Suite

    测试套件:把多条用例放在一起执行。

    • TestSuite用来组装单个测试用例。

    3.Test Runner

    测试的执行是单元测试中一个重要的概念。

    • 一般单元测试框架中都会提供丰富的执行策略和执行结果。 

    4.Test Fixture

    对一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。

    EG

    • 测试用例的执行需要访问数据库。
    • setUp()中建立数据库连接来进行初始化。
    • tearDonw()中清除数据库产生的数据。

    实例

      

    套件:

       

       

    二、断言方法

    定义:在执行用例过程中,最终用例是否执行通过,是通过判断测试得到的实际结果与预期结果是否相等决定的。unittest框架的TestCase类提供下面这些方法用于测试结果的判断。

     

     三、discover更多测试用例

    当测试用例集更多,runtest逐一添加过于麻烦,TestLoader类中提供有discover()方法可更容易解决这个问题。

    unittest.defaultTestLoader.discover(start_dir, pattern, top_level_dir)

    • start_dir:要测试的模块名或测试用例目录
    • pattern=‘test*.py:表示用例文件名的匹配原则。
    • top_level_dir=None:测试模块的顶层目录,如果没有顶层,默认为None

    四、用例执行的顺序

    用例的执行涉及多个层级:

    1. 在多个测试目录的情况下,先执行哪个目录?
    2. 在多个测试文件的情况下,先执行哪个文件?
    3. 在多个测试类的情况下,先执行哪个测试类?
    4. 在多个测试方法的情况下,先执行哪个测试方法?
    • unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0~9、A~Z、a~z。
    • 对于测试目录与测试文件来说,unittest框架同样是按照这个规则来加载测试用例的。

    五、执行多级目录的用例

    当测试用例达到一定量级时,就要考虑划分目录,比如规划如下目录:

     

    如果将discover()方法中的start_dir参数定义为“./test_case/”目录,那么只能加载test_a.py文件中的测试用例。

    方法:在每级目录中新建一个__init__.py文件即可。

    六、跳过测试和预期失败

    在运行测试时,有时需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试。unittest提供了实现这些需求的装饰器。

    1、unittest.skip(reason)

    • 无条件地跳过装饰的测试,说明跳过测试的原因。

    2、unittest.skipIf(condition,reason)

    • 跳过装饰的测试,如果条件为真时。

    3、unittest.skipUnless(condition, reason)

    • 跳过装饰的测试,除非条件为真。

    4、unittest.expectedFailure

    • 测试标记为失败。不管执行结果是否失败,统一标记为失败 

    七、web测试用例目录样例

    小结:

    Unittest

    一、测试用例 TestCase

    用例名必须以Tes开头(Test_01)

     

    二、测试固件  Test Fixture

    setUp  每条用例执行时执行一遍

    tearDown   每条用例结束执行一次

    @classmethod

    setUpClass.  在执行所有用例前执行一次

    @classmethod

    tearDownClass   在执行所用用例后执行一次 

     

    三、测试套件 TestSuit

    生成执行用例的套件

    Suit = unittest.TestSuite()

    Suit.addTest(TestCount(“测试文件名或测试用例名,可以使用正则”))

     

    四、测试启动 TestRunner

    启动Suit

    Runner = unittest.TextTestRunner()

    Runner.run(Suit)

     

    五、断言

    assertEqual(a,b) 

    assertIs(a,b)

     

    六、discover

    unittest.defaultTestLoader.discover(start_dir=,pattern=,top_level_dir=)

    start_dir : 测试用例模块名或测试用例目录

    pattern : 用例文件名的测试规则

    top_lever_dir=None  : 测试模块的顶级目录

     

    七、执行用例的顺序

    1、当运行用例时,鼠标停放的位置在用例上时,运行用例时,就会执行该条用例。当停放在用例外,才可以执行多条用例。

    2、用例的执行顺序是按ASCI码表顺序运行。测试目录与测试文文件。

     

    八、unittest中的装饰器

    unittest.skip(reason)

    无条件跳过用例,reason描述原因

    unittest.skipIf(condition,reason)

    Condition条件下,跳过该条用例

     unittest.skipUnless(condition,reason)

    除非Condition为真时,不跳过该条用例

    unittest.expectedFailure

    统一标记该条用例为失败

     

  • 相关阅读:
    [杂题]FZU2190 非提的救赎
    [模拟]ZOJ3480 Duck Typing
    [模拟]ZOJ3485 Identification Number
    [数论]ZOJ3593 One Person Game
    [博弈]ZOJ3591 Nim
    [杂题]URAL1822. Hugo II's War
    二分图相关
    KMP算法详解
    中国国家集训队论文集目录(1999-2009)
    最短路Dijkstra算法的一些扩展问题
  • 原文地址:https://www.cnblogs.com/070727sun/p/12388837.html
Copyright © 2020-2023  润新知