成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度剖析Python面向?qū)ο笳Z(yǔ)言內(nèi)容

開發(fā) 后端
在進(jìn)行設(shè)計(jì)和編寫Python面向?qū)ο笳Z(yǔ)言時(shí),一個(gè)大問題就是如何處理setup 和 teardown 代碼,下文就進(jìn)行詳細(xì)說(shuō)明。

Python面向?qū)ο笳Z(yǔ)言必須執(zhí)行一些復(fù)雜的操作,比如在 Firefox 中打開網(wǎng)頁(yè)并單擊 “Continue” 按鈕,然后檢查結(jié)果。在開始實(shí)際測(cè)試(比如打開頁(yè)面并單擊按鈕)之前,測(cè)試必須先完成一些步驟。

現(xiàn)在,考慮如果一百個(gè)功能性測(cè)試都要這樣執(zhí)行測(cè)試,會(huì)怎么樣。它們都需要通過調(diào)用共同的 setup 例程運(yùn)行 Firefox。然后才能執(zhí)行自己的測(cè)試。與此相應(yīng),為了取消 setup 所做的操作,可能還有 teardown 代碼。這樣,在測(cè)試套件中就會(huì)增加兩百個(gè)額外的函數(shù)調(diào)用。每個(gè)測(cè)試函數(shù)會(huì)像下面這樣:

  1. # Naming a with_setup decorator  
  2.  
  3. firefox_test = with_setup(firefox_setup, firefox_teardown)  
  4.  
  5. @firefox_test  
  6. def test_index_click():  
  7.     ...  
  8.  
  9. @firefox_test  
  10. def test_index_menu():  
  11. ... 

為了消除這些重復(fù)的代碼,許多測(cè)試框架提供了一次性指定每個(gè)測(cè)試都需要運(yùn)行的 setup 和 teardown 代碼的機(jī)制。本文討論的三種框架 zope.testing、py.test 和 nose 都支持程序員編寫的 unittest.TestCase 類中的標(biāo)準(zhǔn) setUp() 和 tearDown() 例程。

但是,除此之外,Python面向?qū)ο笳Z(yǔ)言各個(gè)框架為共同 setup 代碼提供的特性有顯著差異。zope.testing 本身沒有為 setup 和 teardown 提供額外支持。但是前面討論過的 z3c.testsetup 擴(kuò)展會(huì)對(duì) doctest 做一些有意思的處理。

它通過在文件中尋找 :Test-Layer: 字符串來(lái)尋找測(cè)試。doctest 中的層實(shí)際上可以指定兩個(gè)值之一。如果把 doctest 標(biāo)為屬于 unit 層,就意味著運(yùn)行它不需要任何特殊的 setup。但是,如果把它標(biāo)為屬于 functional 層,就意味著只能在調(diào)用框架 setup 函數(shù)之后運(yùn)行它。

通常情況下,:Test-Layer: functional 測(cè)試被設(shè)計(jì)為在完整地配置了 Zope Web 框架的情況下運(yùn)行。因此它們可以創(chuàng)建測(cè)試瀏覽器實(shí)例、發(fā)送請(qǐng)求和查看 Web 框架返回的響應(yīng)。通過代表 doctest 執(zhí)行 setup,z3c.testsetup 可以避免在每個(gè)功能性 doctest 中復(fù)制大量樣板代碼。

最后一項(xiàng)減少樣板代碼的便捷特性是,可以向 z3c.testsetup 提供一個(gè)預(yù)裝載到每個(gè)單元 doctest 的名稱空間中的變量列表。以及另一個(gè)預(yù)裝載到每個(gè)功能性 doctest 中的變量列表。這樣就不需要在每個(gè) doctest 文件的開頭復(fù)制一組相同的 import 語(yǔ)句。

Python面向?qū)ο笳Z(yǔ)言 在默認(rèn)情況下不提供對(duì) setup 和 teardown 的支持。它甚至不運(yùn)行標(biāo)準(zhǔn) unittest.TestCase 類的 setUp() 和 tearDown() 方法,除非打開它的 unittest 插件。nose 在支持共同測(cè)試代碼方面是最出色的。在尋找測(cè)試時(shí),nose 跟蹤記錄找到測(cè)試的上下文。它認(rèn)為 unittest.TestCase 子類內(nèi)部的每個(gè)測(cè)試方法是這個(gè)類 “內(nèi)部的”。

因此由它的 setUp() 和 tearDown() 方法控制,它還認(rèn)為測(cè)試存在于它們的模塊、包含模塊的包以及外層所有包的 “內(nèi)部”。因此,對(duì)于多層 “同心” 容器內(nèi)的測(cè)試,nose 會(huì)在運(yùn)行測(cè)試之前運(yùn)行所有容器中的 setup 代碼,在運(yùn)行測(cè)試之后運(yùn)行所有容器中的 teardown 代碼。

最后,在 @with_setup 修飾符中指定的或作為 unittest.TestCase 子類中的方法提供的 setup 和 teardown 函數(shù)對(duì)于相關(guān)的每個(gè)函數(shù)或測(cè)試運(yùn)行一次,而在模塊級(jí)或包級(jí)向 nose 提供的 setup 和 teardown 代碼對(duì)于整個(gè)測(cè)試集只運(yùn)行一次。因此,不要認(rèn)為這樣的測(cè)試是完全互相隔離的:它們會(huì)共享在模塊或包的 setup 例程中創(chuàng)建的資源拷貝。

【編輯推薦】

  1. 漫談Python 源代碼編制技巧
  2. 簡(jiǎn)單易于操作的Python 工具詳解
  3. 有關(guān)Python應(yīng)用領(lǐng)域進(jìn)行說(shuō)明介紹
  4. PythonAndroid面向?qū)ο蟮木幊獭?FONT>Python應(yīng)用程序
  5. 如何使用Python模塊解析配置文件 ?
責(zé)任編輯:chenqingxiang 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2010-02-02 13:22:06

Python面向?qū)ο?/a>

2010-03-01 18:33:30

2010-02-26 17:44:40

Python測(cè)試框架

2010-02-26 10:38:29

Python語(yǔ)言

2010-03-01 17:47:53

Python語(yǔ)言

2010-02-24 14:04:32

Python腳本語(yǔ)言

2010-07-13 13:06:41

Perl面向?qū)ο?/a>

2009-11-02 16:22:16

VB.NET面向?qū)ο?/a>

2024-04-02 07:32:58

Go語(yǔ)言接口

2010-01-15 10:32:21

C++語(yǔ)言

2010-01-26 14:46:42

C++語(yǔ)言

2010-07-20 09:33:14

Perl方法

2022-10-21 09:01:41

StudentC++類型

2010-02-01 13:34:59

Python 腳本

2010-02-02 15:25:35

Python語(yǔ)法

2010-02-03 16:56:24

Python包

2010-03-01 14:50:06

Python 工具

2012-02-17 10:50:10

Java

2010-02-26 13:21:42

WCF通道形狀

2009-07-14 16:51:50

Jython中的對(duì)象
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 色中文在线| 国产精品久久久久久久久久三级 | 日本aⅴ中文字幕 | 亚洲精品乱码久久久久久久久久 | 一区二区三区国产好 | 一区二区福利视频 | 欧美男男videos| 欧美日韩亚洲国产 | 免费久久99精品国产婷婷六月 | 亚洲人成人一区二区在线观看 | 精品久久99 | 欧美视频网| 中文字幕欧美日韩一区 | 国产免费一区 | 国产中文区二幕区2012 | 久久精品一区二区三区四区 | 毛片免费看 | 国产麻豆乱码精品一区二区三区 | 亚洲一区二区久久 | 免费电影av | 国产精品美女久久久久久免费 | 少妇黄色| 久久99精品久久久水蜜桃 | 四虎在线观看 | 蜜桃av一区二区三区 | 91在线导航 | 中文字幕一区在线 | 日本a∨精品中文字幕在线 亚洲91视频 | 伊人网站在线 | 国产视频久久 | 国产综合精品一区二区三区 | 狠狠干狠狠操 | 欧美一极视频 | 91精品国产欧美一区二区成人 | 一级毛片免费完整视频 | 欧美激情久久久 | 一级片片| www.久| 亚洲情侣视频 | a级黄色网 | 黄色大全免费看 |