zoukankan      html  css  js  c++  java
  • Pyunit测试框架

    一、概述

      本系列主要解决的问题是“接口自动化测试”,选择的测试语言是 python 脚本语言。截至目前为止,python是公认的最好的用于自动化应用的语言之一

    二、PyUnit测试框架

      使用 python 作为自动化编程语言,那么就自然的使用 pyunit 作为自动化测试框架了。测试框架unittest要达到如下目标:

      ● 支持自动化测试

      ● 让所有的测试脚本共享 开启(setup) 和 关闭(shutdown) 的代码

      ● 可以通过集合(collections)的方式来组织测试用例脚本

      ● 将所有的测试脚本从测试报告框架中独立出来

    为了达到以上目标,unittest支持如下几个重要概念:

      ● 测试装置(test fixture):

        为一个或者多个测试用例做一些准备工作,例如:连接一个数据库,创建一个目录,或者开启一个进程

      ● 测试用例(test case):

        测试用例是测试行为的最小单元,通过对一些输入输出值的对比来进行测试检查

      ● 测试套件(test suite):

        将测试用例 或者 测试用例集合 聚合组织起来的集合。可以批量执行一个测试套件内所有的测试用例

      ● 测试执行器(test runner):

        组织安排测试脚本执行活动的组件。测试执行器通过一些图形界面,文本界面或者返回一些特殊的值来展示测试脚本的结果。主要用于生成测试报告

    三、基本示例

      如下示例也来自于官方文档 basic_demo.py:

     1 # coding:utf-8"""
     2 基本的自动化测试脚本 basic_demo.py
     3 """__author__ = 'zheng'import unittestclass TestStringMethods(unittest.TestCase):
     4 
     5    def setUp(self):
     6        print 'init by setUp...'
     7 
     8    def tearDown(self):
     9        print 'end by tearDown...'
    10 
    11    def test_upper(self):
    12        self.assertEqual('foo'.upper(), 'FOO')
    13 
    14    def test_isupper(self):
    15        self.assertTrue('FOO'.isupper())
    16        self.assertFalse('Foo'.isupper())
    17        self.assertTrue('Foo'.isupper())
    18 
    19    def test_split(self):
    20        s = 'hello world'
    21        self.assertEqual(s.split(), ['hello', 'world'])
    22        # check that s.split fails when the separator is not a string
    23        with self.assertRaises(TypeError):
    24            s.split(2)if __name__ == '__main__':
    25    unittest.main()

    测试用例脚本有如下几种组织方式:

      ● 独立测试函数

      ● 单用例测试类

      ● 多用例测试类

    其中多用例测试类,也就是上面基本示例的方式,这种方式具有如下特点:

      1. 测试类 继承于 unittest.TestCase

      2. 一个测试类可以管理多个 测试脚本函数

      3. 测试脚本函数名称需要以 test_ 开头

      4. 一个测试类里面的所有的测试函数共享 setUp和tearDown函数

    在控制台中运行此程序:

     1 ➜  src git:(master) ✗ python basic_demo.py
     2 init by setUp...
     3 Fend by tearDown...
     4 init by setUp...
     5 end by tearDown...
     6 .init by setUp...
     7 end by tearDown...
     8 .======================================================================FAIL: test_isupper (__main__.TestStringMethods)----------------------------------------------------------------------
     9 Traceback (most recent call last):
    10  File "basic_demo.py", line 24, in test_isupper
    11    self.assertTrue('Foo'.isupper())AssertionError: False is not true----------------------------------------------------------------------
    12 Ran 3 tests in 0.001s
    13 
    14 FAILED (failures=1)➜  src git:(master) ✗

    通过上面的运行结果,大家不难发现如下有用信息:

      ● 测试脚本执行的顺序,先setUp再执行测试函数,再tearDown

      ● 测试脚本输出中会将测试不通过的脚本及遇到的问题打印出来,这就是对测试人员有用的结果报表

      ● 执行的测试脚本的总数和测试所用的时间

    四、总结

      本文的基本例子的 main 函数采用的最简单的方式,直接运行所有的测试用例,并生成默认的文本报告。其实只需要对调用函数做一些简单的修改,可以将这些测试用例进行合理组织,并获取其实有用的数据信息,以便和信息系统进行集成,形成较好的扩展

  • 相关阅读:
    杭电ACM 1197
    杭电ACM 1196
    杭电ACM题目分类
    杭电ACM 1178
    指针转化(二重)
    怎么查看一个类的内存分布
    how find out what is causing Visual Studio to think each project is out of date
    MSB8013
    File mapping
    SHFileOperation 解决double-null terminated
  • 原文地址:https://www.cnblogs.com/CNMBJR/p/5740110.html
Copyright © 2011-2022 走看看