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

輕輕松松實(shí)現(xiàn)進(jìn)行Python 測(cè)試模塊

開發(fā) 后端
下面文章提出的py.test 和 nose 框架使用相似但略有差異的規(guī)則集搜索 Python 包,尋找它們認(rèn)為包含Python 測(cè)試模塊。

為了更容易實(shí)現(xiàn)這種Python 測(cè)試模塊,避免多次復(fù)制并粘貼測(cè)試函數(shù)以及設(shè)置惟一的名稱,py.test 和 nose 都支持衍生測(cè)試,它實(shí)際上是一個(gè)迭代器,然后使用它的 yield 語句并提供調(diào)用參數(shù)。

但是,之后它們都會(huì)遇到相同的情況:它們必須檢查模塊列表,尋找開發(fā)人員希望作為測(cè)試運(yùn)行的函數(shù)和類。正如在前一篇文章中看到的,py.test 往往選擇單一標(biāo)準(zhǔn),期望使用它的所有項(xiàng)目都遵守這一標(biāo)準(zhǔn);而 nose 允許更豐富的定制,但是這會(huì)犧牲行為的可預(yù)測(cè)性。

對(duì)于測(cè)試發(fā)現(xiàn),也是如此:py.test 按照固定、不可變且可預(yù)測(cè)的規(guī)則檢測(cè)測(cè)試模塊中的測(cè)試,而 nose 采用靈活的可定制的規(guī)則。如果項(xiàng)目使用 nose 執(zhí)行測(cè)試,就先必須閱讀項(xiàng)目的 Python 測(cè)試模塊,了解 nose 是采用通常的測(cè)試檢測(cè)規(guī)則,還是采用這個(gè)項(xiàng)目特有的規(guī)則。

下面是 py.test 使用的過程:

  1. class Category(models.Model):     
  2.     id = models.AutoField('id', primary_key=True)     
  3.     name = models.CharField(maxlength=50)     
  4.     code = models.CharField(maxlength=50)     
  5.     parentCategory = models.ForeignKey('self', 'id', null=True)     
  6.     enable = models.BooleanField()     
  7.          
  8.     def __str__(self):     
  9.         return self.name     
  10.          
  11.     class Admin:     
  12.         list_display = ('id', 'name', 'code', 'parentCategory')   

當(dāng) py.test 檢查 Python 測(cè)試模塊的內(nèi)部時(shí),它收集名稱以 test_ 開頭的每個(gè)函數(shù)和名稱以 Test 開頭的每個(gè)類。無論類是否繼承自 unittest.TestCase,它都會(huì)收集它們。測(cè)試函數(shù)直接運(yùn)行,但是對(duì)于測(cè)試類,還必須搜索方法。類實(shí)例化之后,作為測(cè)試運(yùn)行名稱以 test_ 開頭的所有方法。

如果測(cè)試類繼承自標(biāo)準(zhǔn)的 Python unittest.TestCase 類,py.test 框架會(huì)表現(xiàn)出一種古怪的行為:如果類不包含 runTest() 方法,那么即使它包含幾個(gè) test_ 方法,py.test 也會(huì)拋出異常并失敗。但是,如果存在 runTest() 方法,py.test 會(huì)忽略它;這個(gè)方法必須存在,py.test 才能接受這個(gè)類,但是不會(huì)運(yùn)行這個(gè)方法,因?yàn)樗拿Q不是以 test_ 開頭的。

為了糾正這種行為,可以在項(xiàng)目的 conttest.py 文件中或使用 -p 命令行選項(xiàng)激活框架的 unittest 插件:這會(huì)讓 py.test 對(duì)其行為做三個(gè)更改。首先,不再只檢測(cè)名稱以 Test 開頭的類,還會(huì)檢測(cè)繼承自 unittest.TestCase 的其他類。

第二,對(duì)于沒有提供 runTest() 方法的 TestCase 子類,py.test 不再報(bào)告異常。第三,在類包含的測(cè)試之前和之后,以標(biāo)準(zhǔn)方式正確地運(yùn)行 TestCase 子類中的所有 setUp() 和 tearDown() 方法。

盡管 nose 提供更強(qiáng)的定制能力,但是比較簡(jiǎn)單的測(cè)試發(fā)現(xiàn)過程如下:當(dāng) nose 檢查 Python 測(cè)試模塊的內(nèi)部時(shí),它采用在選擇測(cè)試模塊時(shí)使用的正則表達(dá)式。收集與這個(gè)正則表達(dá)式匹配的函數(shù)和類。(在默認(rèn)情況下,尋找包含單詞 Test 或 test 的名稱,但是可以通過命令行或配置文件提供不同的正則表達(dá)式)。

當(dāng) nose 檢查測(cè)試類的內(nèi)部時(shí),它運(yùn)行與同一正則表達(dá)式匹配的方法。無須特別指定,nose 總會(huì)檢測(cè) unittest.TestCase 的子類并作為測(cè)試使用它們。但是,它會(huì)根據(jù)自己的正則表達(dá)式?jīng)Q定哪些方法是測(cè)試,而不使用標(biāo)準(zhǔn)的 unittest 模式 ^test。

【編輯推薦】

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

2010-01-14 16:10:21

C++開發(fā)

2009-09-15 16:26:46

Linq排序

2010-01-18 11:20:58

C++語言

2010-01-15 10:14:21

C++ Builder

2010-03-03 18:13:23

Android組成框架

2010-01-26 14:53:43

C++

2009-11-09 15:41:14

WCF安全性

2009-11-10 15:44:17

VB.NET常量

2010-01-20 10:31:18

C++編程技術(shù)

2010-01-20 18:17:55

C++異常問題

2009-06-10 17:58:41

2017-10-27 12:00:28

MySQL數(shù)據(jù)庫優(yōu)化

2010-08-30 09:27:20

2015-09-22 10:31:11

2019-11-28 10:21:01

MySQLDocker數(shù)據(jù)

2011-04-28 15:41:02

打印機(jī)卡紙

2009-11-11 09:31:44

ADO.NET事務(wù)處理

2012-01-05 10:23:33

IE9預(yù)訂火車票

2009-02-20 13:39:01

2021-11-07 06:52:44

Windows 11操作系統(tǒng)微軟
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美一区二区三区精品免费 | 精品1区| 一区二区三区免费观看 | 日本免费在线 | 91九色porny首页最多播放 | 成人午夜视频在线观看 | 特级毛片爽www免费版 | 久久久综合久久 | 国产不卡在线 | 亚洲综合大片69999 | 精品中文在线 | 久久精品免费 | 精品乱码一区二区三四区视频 | 日韩免费福利视频 | 波多野结衣一区二区 | 国产成人精品免费视频大全最热 | 日本三级电影在线观看视频 | 免费播放一级片 | 98久久 | 密室大逃脱第六季大神版在线观看 | 亚洲一区二区在线播放 | 天天插天天射天天干 | 97色伦网 | 中文字幕电影在线观看 | 91久久久久久久久 | 国产精品久久精品 | 国产欧美一区二区三区在线看 | 一区二区在线 | 91免费高清视频 | 精品视频一区二区 | 亚洲精品女优 | av一级毛片| 国产精品精品视频 | 欧美精品久久久久久久久久 | 91久久精品| 久久人人国产 | 日韩视频专区 | 一区二区三区在线看 | 黄在线 | 青春草91 | 男人天堂网av |