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

透析Python 項目測試全過程

開發 后端
最近公司進行了Python 項目測試的工作,這將意味著 Python 測試可以編寫得更簡潔、更統一,能夠產生更好的結果報告。

對于一般新入手的開發人員,如果只想在Python 項目測試或添加新特性之前檢查包是否能夠在他自己的平臺上進行工作,那么 test_suite 入口點是非常方便的,這也避免程序員多走的彎路。

本文討論先進的測試框架如何提供健壯的應用程序測試自動發現,以及這如何替代過去維護的集中式測試列表。Python 編程社區非常重視單元測試和功能性測試。這種風氣不但有助于確保組件和應用程序最初的質量,還促使程序員不斷調整和改進代碼。

本文是討論現代 Python 測試框架的 三篇系列文章 的第二篇。本系列中的 ***篇文章 介紹了 zope.testing、py.test 和 nose,介紹它們如何影響 Python 項目編寫和維護測試的方式。

本文介紹如何調用這三種框架、它們如何在項目中發現測試以及如何選擇并運行測試。***一篇文章將討論如何通過各種報告特性讓測試支持更強大的技術。Python 測試的黑暗時代Python 項目測試曾經是非常特殊化、個人化的活動。開發人員可能先在單獨的 Python 腳本中編寫每組測試。

然后,編寫一個名為 test_all.py 或 tests.py 的腳本,這個腳本導入并運行他的所有測試。但是,無論這個過程的自動化做得多么好,這種方式仍然是特殊化的:參與項目的每個開發人員都必須知道測試腳本放在哪里以及如何調用它們。

如果某個 Python 開發人員從事十幾個項目,他就必須記住十幾個測試命令。test_all.py(或項目采用的其他名稱)還可能手工導入所有其他測試,這可能導致風險。如果這個集中的測試列表過時了(常常是由于開發人員添加了新的測試套件。

手工運行它,但是忘了把它添加到中心腳本中),那么在 Python 包投入生產之前的***一次測試就會遺漏許多測試。這種無政府狀態的另一個缺點是,它要求每個測試文件包含樣板代碼,從而能夠作為單獨的命令運行。如果查看 Python 項目測試或當今的一些 Python 項目,會看到許多這樣的測試示例:

  1. # test_old.py - The old way of doing things  
  2.  
  3. import unittest  
  4.  
  5. class TruthTest(unittest.TestCase):  
  6.     def testTrue(self):  
  7.         assert True == 1  
  8.  
  9.     def testFalse(self):  
  10.         assert False == 0  
  11.  
  12. if __name__ == '__main__':  
  13. unittest.main() 

本系列的 ***篇文章 已經討論過基于 TestCase 類的測試在現代環境中為什么常常是不必要的。但是,現在注意***兩行:它們起什么作用?答案是,它們檢測什么時候從命令行單獨運行這個 test_old.py 腳本。

在這種情況下,它們運行一個 unittest 簡便函數,這個函數在模塊中搜索測試并運行它們。它們使這個測試文件可以獨立于項目范圍的測試腳本單獨運行。顯然,在數十甚至數百個測試模塊中復制相同的代碼非常麻煩。

另一個不太明顯的缺點是這種做法不利于標準化。如果 test_main() 函數不夠完善,無法檢測出某個模塊的測試,那么這個模塊的行為可能與其他測試套件不匹配。因此,每個模塊在測試類的名稱、操作方式和運行方式方面稍有差異。

由于主流 Python 測試框架的出現,上述的所有問題已經解決了,而且每種框架解決這些問題的方式大致相同。首先,這三種測試框架都提供了從操作系統命令行運行測試的標準方法。這樣,每個 Python 項目測試就不再需要在代碼基中維護全局測試腳本。

zope.testing 包運行測試的機制是最特殊化的:因為 Zope 開發人員常常使用 buildout 設置他們的項目,常常通過 buildout.cfg 文件中的 zc.recipe.testrunner recipe 安裝測試腳本。但是,結果在不同的項目上相當一致:在我遇到的每個 Zope 項目中,開發 buildout 都會創建一個 ./bin/test 腳本,可以通過它調用項目的測試。

py.test 和 nose 項目的做法更意思。它們都提供一個命令行工具,所以每個項目完全不需要有自己的測試命令:

  1. # Run "py.test" on the project  
  2. # in the current directory...  
  3.  
  4. $ py.test  
  5.  
  6. # Run "nose" on the project  
  7. # in the current directory...  
  8.  
  9. $ nosetests 

py.test 和 nosetests 工具甚至有幾個相同的命令行選項,比如 -v 選項在執行測試時輸出測試的名稱。可能過不了多久,只要程序員熟悉這兩種工具,就能夠運行大多數公共 Python 包的測試

【編輯推薦】

  1. 有關Python系統文件進行介紹指導
  2. 如何正確的使用Python函數
  3. 對Python 構建工具進行詳細介紹分析
  4. PythonAndroid淺析Python優勢所在
  5. 如何使用Python模塊解析配置文件?
責任編輯:chenqingxiang 來源: 機械工業出版社
相關推薦

2011-04-18 15:56:10

軟件測試

2011-02-22 10:46:02

Samba配置

2010-03-01 17:01:03

Python編程技巧

2009-12-08 17:56:16

WCF配置

2009-04-13 12:37:18

2011-09-06 15:38:20

QT安裝

2011-01-21 17:51:52

2010-02-22 13:38:50

Python解析器

2012-11-06 10:19:18

Java自定義加載Java類

2010-11-19 10:11:49

Oracle物化視圖

2009-06-10 16:55:42

cygwin netb安裝

2010-03-10 13:24:45

Zend Debugg

2010-06-17 13:10:09

Linux Grub修

2011-03-11 10:39:02

YUM安裝LAMP

2010-06-12 10:03:20

Ubuntu Grub

2010-07-21 14:51:19

telnet-serv

2019-05-14 15:27:31

MongoDB自動備份數據庫

2009-12-15 16:51:32

2011-06-24 13:08:34

Qt Qt 4.5.3 移植

2010-06-11 13:15:07

UML軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区国产精品 | 天天亚洲| 中文字幕影院 | 日韩一区二区三区视频在线播放 | 手机在线观看av | 91中文字幕 | 一区二区三区视频在线观看 | 日日夜夜草 | 国产精品久久性 | 99精品一区二区三区 | 国产一区亚洲 | 国产精品国产亚洲精品看不卡15 | 狠狠入ady亚洲精品经典电影 | 美女视频一区 | 日韩一区二区三区在线播放 | 国产97视频在线观看 | 成人在线免费电影 | 亚洲精品国产电影 | 国产1区| 亚洲香蕉在线视频 | 在线国产视频观看 | 成人精品久久 | 狠狠艹 | 不用播放器看的av | 亚洲综合第一页 | 亚洲视频一区二区三区 | zzzwww在线看片免费 | 玖玖视频网 | 色先锋影音 | 五月天激情电影 | 九久久| 一区二区三区中文字幕 | 激情五月激情综合网 | 国产日韩一区二区三免费高清 | 人人干免费 | 欧美成人高清视频 | 欧美精品久久 | 成人久久久久 | 欧美在线视频网 | 亚洲一区二区久久 | 欧美人人|