声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:http://blog.csdn.net/halcyonbaby

内容系本人学习、研究和总结,如有雷同,实属荣幸!

组件一览

  • hacking
    一组flake8插件,用于静态检查。
    https://pypi.python.org/pypi/hacking
  • coverage
    衡量python代码覆盖率的工具。能够单独执行/API方式或者以nose插件方式执行“nosetests --with-coverage”。
    https://nose.readthedocs.org/en/latest/plugins/cover.html
  • discover
    測试用例发现。(2.7已经包括在unittest中,2.4须要backport) 主要在run_test.sh下使用。
    https://pypi.python.org/pypi/discover/0.4.0
  • feedparser
    使用python进行parse RSS订阅内容主要在version API的測试中使用(versionAPI支持atom格式返回信息)
  • MySQL-python
    mysql接口的python实现
  • psycopg2
    postgresql接口的python实现
  • pylint
    对python进行静态分析、检查的工具
  • python-subunit
    subunit是測试结果的流协议。python-subunit是它的python实现。
  • sphinx
    文档生成工具(基于Restructed格式)
  • oslosphinx
    openstack对sphinx的扩展
  • testrepository
    測试结果的数据库。主要在覆盖率測试时使用。
  • mock
    对所測试的函数的外部依赖函数进行模拟替换。3.3以后已经是python标准库。mock的实现原理也非常easy,一般使用类似mokey patch的方式实现。
  • mox
    基于java的easymock提供的python mock对象框架(基本上已经停止维护)
    Mox的运行流程:

    • Create mock (in record mode)
    • Set up expectations
    • Put mock into replay mode
    • Run test
    • Verify expected interactions with the mock occurredmox与mock功能类似,都是用来做函数或者类的mock。
Mock方法和属性:
>>> # Mock
>>> my_mock = mock.Mock()
>>> my_mock.some_method.return_value = "calculated value"
>>> my_mock.some_attribute = "value"
>>> assertEqual("calculated value", my_mock.some_method())
>>> assertEqual("value", my_mock.some_attribute)>>> # Mox
>>> my_mock = mox.MockAnything()
>>> my_mock.some_method().AndReturn("calculated value")
'calculated value'
>>> my_mock.some_attribute = "value"
>>> mox.Replay(my_mock)
>>> assertEqual("calculated value", my_mock.some_method())
>>> assertEqual("value", my_mock.some_attribute)部分mock(对已有对象的某个方法进行mock):
>>> # Mock
>>> SomeObject.some_method = mock.Mock(return_value='value')
>>> assertEqual("value", SomeObject.some_method())>>> # Mox
>>> my_mock = mox.MockObject(SomeObject)
>>> my_mock.some_method().AndReturn("value")
'value'
>>> mox.Replay(my_mock)
>>> assertEqual("value", my_mock.some_method())
>>> mox.Verify(my_mock)抛出异常:
>>> # Mock
>>> my_mock = mock.Mock()
>>> my_mock.some_method.side_effect = SomeException("message")
>>> assertRaises(SomeException, my_mock.some_method)>>> # Mox
>>> my_mock = mox.MockAnything()
>>> my_mock.some_method().AndRaise(SomeException("message"))
>>> mox.Replay(my_mock)
>>> assertRaises(SomeException, my_mock.some_method)
>>> mox.Verify(my_mock)
  • fixtures
    翻译为“夹具”,顾名思义提供了状态重用等的抽象机制。
---------------myfixture.py-----------------------
import testtools
import unittest
import fixtures
class NoddyFixture(fixtures.Fixture):def setUp(self):super(NoddyFixture, self).setUp()self.frobnozzle = 42self.addCleanup(delattr, self, 'frobnozzle')class NoddyTest(testtools.TestCase, fixtures.TestWithFixtures):def test_example(self):fixture = self.useFixture(NoddyFixture())self.assertEqual(42, fixture.frobnozzle)result = unittest.TestResult()
_ = NoddyTest('test_example').run(result)
print (result.wasSuccessful())-----------------执行结果------------------------
[root@centoo65 data]# python myfixtures.py
True-----------经常使用fixture-------------------------
>>> import fixtures
>>> a = fixtures.TempDir()
>>> a.setUp()
>>> print a.path
/tmp/tmpWB8EmF
>>> quit()
----------------------------------------------
其它參见PolicyFixture
  • testtools
    对python标准单元測试框架的扩展。为什么使用?

    • 更好的断言 比方支持assertThat扩展
    • 更具体的debug信息 比方支持addDetails的信息
    • 扩展的同一时候保持兼容性
    • python多版本号的兼容性
  • tox
    通用的虚拟环境管理和測试命令行工具。
    配置能够看project下的tox.ini文件。tox.ini能够通过tox-quickstart生成。
    命令运行,如:“tox -e py26", "tox -e pep8"
    运行单元測试的时候,顺便生成单元測试报告,并检查測试覆盖率,并生成覆盖率报告。直接运行tox是不行的,仅仅能进行单元測试,须要给tox添加�扩展參数,例如以下:tox -- --cover-erase -- --with-coverage -- --cover-html

类说明

顶级文件夹test.py中:
test.TestCase继承于testtools.TestCase。
test.NoDBTestCase继承于test.TestCase。

test.TestCase中大量使用了fixture对环境进行初始化。(比方DB,Policy等)

openstack单元測试用组件一览相关推荐

  1. Android单元測试之JUnit

    随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...

  2. atitit.jndi的架构与原理以及资源配置and单元測试实践

    atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin  <database> ...

  3. 使用maven运行单元測试总结

    maven本身没有单元測试框架,可是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件能够调用Junit3.Junit4.TestNG等Jav ...

  4. 在Eclipse中使用JUnit4进行单元測试(0基础篇)

    本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能 ...

  5. Android 进行单元測试难在哪-part3

    原文链接 : HOW TO MAKE OUR ANDROID APPS UNIT TESTABLE (PT. 1) 原文作者 : Matthew Dupree 译文出自 : 开发技术前线 www.de ...

  6. (4.5.4)Android測试TestCase单元(Unit test)測试和instrumentationCase单元測试

    Android单元和instrumentation单元測试 Developing Android unit and instrumentation tests Android的单元測试是基于JUnit ...

  7. Openstack“T版“全组件手动部署

    Openstack"T版"全组件手动部署 部署Keystone 创建数据库实例和数据库用户 安装.配置keystone.数据库.Apache 初始化认证服务数据库 配置bootst ...

  8. iOS单元測试:Specta + Expecta + OCMock + OHHTTPStubs + KIF

    框架选择 參考这篇选型文章,http://zixun.github.io/blog/2015/04/11/iosdan-yuan-ce-shi-xi-lie-dan-yuan-ce-shi-kuang ...

  9. 太白---落燕纷飞第一重 Android单元測试Instrumentation和irobotium

    PS:叫太白---落燕纷飞纯粹好玩(天涯明月游戏画面感,打击感,碰撞尽管做的不尽人意,可是太白这个职业还是不错,用作开头,,做个旁白而已). 这里的单元測试不管是instrumentation还是ir ...

最新文章

  1. TCP/IP详解--学习笔记(8)-DNS域名系统
  2. CUDA学习(九十一)
  3. Markdown基本语法总结
  4. jsp医院管理系统_Thymeleaf+SpringBoot+SpringDataJPA实现的中小医院信息管理系统
  5. UE4 多人联机显示每个人的playid
  6. 【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)
  7. 【深圳云栖大会】阿里云弹性计算ESSD云盘产品全面解析
  8. SpringBoot面试题及答案整理
  9. linux查看宽带ip是否动态,linux CentOS系统查看实时宽带的办法
  10. windows下python xgboost 安装方法以及安装了xgboost,pycharm却不能自动补全问题解决
  11. 互联网软件开发和传统软件开发的不同(转型互联网开发需要适应的那些事)
  12. 全球与中国膏体涂抹器市场深度研究分析报告
  13. 解决React Navigation goBack()无效
  14. 根据关键词取商品列表API 返回值说明
  15. 使用docker安装拼音分词器
  16. 华为苏箐被曝转投大众汽车:最狂智能车高管,因抨击特斯拉丢工作,任正非亲自签发罢免令...
  17. MySQL简介、M有SQL的存储引擎、表、字段和数据
  18. shiro:principal为空问题
  19. 实现一个指南针功能的微信小程序
  20. 中国社会追踪调查数据CGSS区县码

热门文章

  1. kafka最好用的脚本一:kafka-topic
  2. 寻路之 A* 搜寻算法
  3. Hypothesis Testing
  4. 如何动态获取UILabel的高度、宽度
  5. [Python学习25] 关于函数更多的练习
  6. Silverlight+WCF 新手实例 象棋 棋子移动-线交叉点(六)
  7. V4L2应用程序框架--一【转】
  8. php后台登陆页面代码
  9. 创业团队如何与兼职做饭的阿姨结算工资比较好?
  10. VisualStudio quick tips -- 快速在多个打开的代码文件间切换