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

统一标记该条用例为失败

 

 

 

posted @ 2020-03-01 19:37  Delta.Farce  阅读(252)  评论(0编辑  收藏  举报