一、概述

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

二、PyUnit测试框架

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

  ● 支持自动化测试

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

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

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

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

  ● 测试装置(test fixture):

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

  ● 测试用例(test case):

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

  ● 测试套件(test suite):

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

  ● 测试执行器(test runner):

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

三、基本示例

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

 # coding:utf-"""
 基本的自动化测试脚本 basic_demo.py
 """__author__ = 'zheng'import unittestclass TestStringMethods(unittest.TestCase):

    def setUp(self):
        print 'init by setUp...'

    def tearDown(self):
        print 'end by tearDown...'

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())
        self.assertTrue('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split()if __name__ == '__main__':
    unittest.main()

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

  ● 独立测试函数

  ● 单用例测试类

  ● 多用例测试类

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

  1. 测试类 继承于 unittest.TestCase

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

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

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

在控制台中运行此程序:

 ➜  src git:(master) ✗ python basic_demo.py
 init by setUp...
 Fend by tearDown...
 init by setUp...
 end by tearDown...
 .init by setUp...
 end by tearDown...
 .======================================================================FAIL: test_isupper (__main__.TestStringMethods)----------------------------------------------------------------------
 Traceback (most recent call last):
  File , in test_isupper
    self.assertTrue('Foo'.isupper())AssertionError: False is not true----------------------------------------------------------------------
 Ran  tests .001s

 FAILED (failures=)➜  src git:(master) ✗

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

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

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

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

四、总结

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

Pyunit测试框架的更多相关文章

  1. python 几种常见的测试框架

    1. unittest 参考文档: https://docs.python.org/3/library/unittest.html The unittest unit testing framewor ...

  2. python测试框架总结

    最流行的有unittest和nose 其他的请看http://wiki.python.org/moin/PythonTes... 中Unit Testing Tools部分 py.test unitt ...

  3. Google C++测试框架系列:入门

    Google C++测试框架系列:入门 原始链接:V1_6_Primer 注 GTest或者Google Test: Google的C++测试框架. Test Fixtures: 这个词实在找不到对应 ...

  4. python主流测试框架的简介

    1.python自动化的一些测试框架 1).unitest(也称为PyUnit)  地址:https://docs.python.org/2/library/unittest.html 2).Nose ...

  5. Python 各种测试框架简介

    转载:https://blog.csdn.net/yockie/article/details/47415265 一.doctest doctest 是一个 Python 发行版自带的标准模块.本篇将 ...

  6. Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest?

    原始链接:Introduction: Why Google C++ Testing Framework? 词汇表 版本号:v_0.1 介绍:为什么使用GTest? GTest帮助你写更好的C++测试代 ...

  7. Selenium 4 Python的最佳测试框架

    随着Python语言的使用越来越流行,基于Python的测试自动化框架也越来越流行.在项目选择最佳框架时,开发人员和测试人员会有些无法下手.做出选择是应该判断很多事情,框架的脚本质量,测试用例的简单性 ...

  8. phpunit 测试框架安装

    PHPUnit是一个轻量级的PHP测试框架.它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计).来自百度百科 一.下载wg ...

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

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

随机推荐

  1. sql中查询中的when...then 语句

    ),jbrq, ),'/','-')as jbrq, ' then '启用' when ' then '未启用' else '修改' end cbzt,shzt from jc_yscbfxb sel ...

  2. 你真的已经搞懂JavaScript了吗?

    题目一: if (!("a" in window)) { var a = 1; } alert(a); 题目二: var a = 1, b = function a(x) { x ...

  3. 关于用了SSH连接之后,但是Chrome中访问stackoverflow超慢的原因

    FQ条件如下: SSH + Chrome + ProxySwitchySharp 其中ProxySwitchySharp已经设置了通配符: 但是打开 www.stackoverflow.com还是奇慢 ...

  4. 判断listview是上滑还是下滑的方法

    方法一: 用setOnScrollListener(new AbsListView.OnScrollListener())来实现,判断滑动后显示的第一个条目 ,与滑动前的第一个条目的大小来判断, 这种 ...

  5. 增强学习————K-摇臂赌博机

    探索与利用增强学习任务的最终奖赏是在多步动作之后才能观察到,于是我们先考虑最简单的情形:最大化单步奖赏,即仅考虑一步操作.不过,就算这样,强化学习仍与监督学习有显著不同,因为机器要通过尝试来发现各个动 ...

  6. 神奇的 routing mesh - 每天5分钟玩转 Docker 容器技术(100)

    接上一节案例,当我们访问任何节点的 8080 端口时,swarm 内部的 load balancer 会将请求转发给 web_server 其中的一个副本. 这就是 routing mesh 的作用. ...

  7. 【Luogu3121】审查(AC自动机)

    题面 Description 农夫约翰为他的奶牛们购买了一份名字叫Good Hooveskeeping的定期杂志,因此奶牛们在挤奶期间就有了大量的阅读素材.遗憾的是在最新的一期上,有一篇有点儿不适当的 ...

  8. JAVA多线程之线程间的通信方式

    (转发) 收藏 记 周日,北京的天阳光明媚,9月,北京的秋格外肃穆透彻,望望窗外的湛蓝的天,心似透过栏杆,沐浴在这透亮清澈的蓝天里,那朵朵白云如同一朵棉絮,心意畅想....思绪外扬, 鱼和熊掌不可兼得 ...

  9. map内置函数分析所得到的思路

    map:会根据提供的函数对指定序列做映射. map(func, *iterables) --> map object Make an iterator that computes the fun ...

  10. HGOI20180815 (NOIP 提高组模拟赛 day2)

    Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gc ...