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

时间: 2024-11-03 05:33:54

Pyunit测试框架的相关文章

Google Test测试框架分析

Google Test测试框架分析 一.简介 Google Test是由Google主导的一个开源的C++自动化测试框架,简称GTest.GTest基于xUnit单元测试体系,和CppUint类似,可以看作是JUnit.PyUnit等对C++的移植. 下图是GTest测试框架的测试过程,表示的是GTest的两种测试方式. 下面将使用一个极其简单的例子表示xUnit测试的主要过程.如对Hummer的CTXString类的成员方法GetLength进行测试.详见下面GTest代码和注释说明. //

Python测试框架之unittest和pytest

目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架,着重解决运行效率低的问题.最近调研了一下另一种主流测试框架Pytest,Pytest是一个非常成熟的全功能的Python测试框架,本文主要对比了Unittest和Pytest这两种较为流行的Python测试框架. 一.Unittest Unittest是Python标准库中自带的单元测试框架,Un

Python 下的unittest测试框架

unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例:使用unittest框架编写测试用例: report:测试报告:保存测试报告,调用封装好的runcases.py,其中加入时间和HTMLTestRunner生成的带时间的测试报告; run_tests.py:执行测试用例:调用封装好的runcases.py执行用例: mail:发送邮件:封装好发送

[android] android下junit测试框架配置

我们的业务代码一般是放在一个新的包下面,这个业务类不能够通过右键run as java application,因为android项目只能运行在手机上的dalvak虚拟机里面 新建一个包,里面写测试类,测试类需要继承AndroidTestCase类,写测试方法,需要throws exception抛出异常给测试框架,测试方法里面一般new出需测试的类,调用它的方法,然后断言结果,assertEquals(预估, 实际结果) 在outline视窗 (window=>show view=>outl

Google推出iOS功能性UI测试框架EarlGrey

经过了一段时间的酝酿后,Google很高兴地宣布了EarlGrey,一款针对于iOS的功能性UI测试框架.诸如YouTube.Google Calendar.Google Photos.Google Translate.Google Play Music等多款Google应用都成功地采用了EarlGrey框架来满足其功能性测试之所需. EarlGre的特点 EarlGrey所提供的主要特性如下所示,这些特性使得应用的测试变得更加轻松,也更具效率: 强大的内建同步机制:测试会在与UI进行交互前自动

Android兼容性测试框架(CTS)手册

了解老码农个人隐私,请看这里:http://www.koulianbing.com/?page_id=12 本文翻译自Android官方的CTS手册android-cts-manual-r4.pdf Android兼容性测试框架手册 1.为什么需要兼容性测试(以下称CTS)? 1.1.让APP提供更好的用户体验.用户可以选择更多的适合自己设备的APP.让APP更稳定. 1.2.让开发者设计更高质量的APP. 1.3.通过CTS的设备可以运行Androidmarket. 另外,CTS是免费的,而且

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**RobotFramework 1.**工具介绍:Robotframework在测试中作为组织测试用例和BDD关键字的平台,主要使用RIDE进行管理,它不是一个工具,而仅仅是一个框架,使用Python进行开发,同时支持WEB测试(Selenium).Java GUI 测试,启动线程.终端.SSH等.支持BDD

mock测试框架Mockito

无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访问实际的文件系统或数据库),而TDD经常会碰到协同模块尚未开发的情况,而mock技术正是解决这些问题的灵丹妙药. mock技术的目的和作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开. 我们可以自己编写自定义的Mock对象实现mock技术,但是编写自定义的Mo

测试框架mochajs详解

测试框架mochajs详解 章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建议使用箭头函数 钩子函数 钩子函数的描述参数 异步的钩子函数 全局钩子 延迟启动测试 测试用例TODO 仅执行一个用例集/用例 跳过哪些用例集/用例 重新执行用例 动态生成用例 测试时间 测试超时 用例集执行超时 用例执行超时 钩子函数超时 diff差异比较功能 mocha使用命令和参数 mocha