欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

openstack單元測試用組件一覽

系統 2523 0

聲明:

本博客歡迎轉發,但請保留原作者信息 !

博客地址: 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 = 42
        self.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單元測試用組件一覽


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本视频一区在线观看免费 | 日本精品久久久久久久 | 久草在线免费福利视频 | 国产高清在线精品一区二区三区 | 午夜精品久久久久久99热软件 | 污片免费看 | 青娱乐网站 | www成人国产在线观看网站 | 奇米视频888| 午夜影院在线视频 | 亚洲欧洲精品一区二区 | 亚洲综合国产精品 | 成人深夜福利视频 | 日韩精品一区二区三区视频播放 | 国产欧美成人 | 国产AV一区二区三区传媒 | 亚洲欧美中文日韩在线v日本 | 精品久久精品 | 国产91久久最新观看地址 | 亚洲精品美女久久久久 | 日韩视频在线精品视频免费观看 | 欧美成人精品久久精品 | 亚洲高清在线播放 | 91精品国产91久久久久久 | 欧美日韩中文在线 | 超级碰碰碰免费视频 | 国产免费叼嘿在线观看 | 爱爱视频在线观看 | 朋友不在家 | 国产亚洲综合视频 | 成人精品视频在线观看 | 久草www| 色拍拍在精品视频69影院在线 | 欧美精彩视频 | 亚洲最新永久观看在线 | 日本久久久久久 | 亚洲欧美影视 | 播五月婷婷 | 丁香婷婷综合五月六月 | 激情视频在线观看网站 | 久久久精品视频免费观看 |