(etra) it-ebooks - Python 單元測(cè)試自動(dòng)化教程(機(jī)翻)_第1頁(yè)
(etra) it-ebooks - Python 單元測(cè)試自動(dòng)化教程(機(jī)翻)_第2頁(yè)
(etra) it-ebooks - Python 單元測(cè)試自動(dòng)化教程(機(jī)翻)_第3頁(yè)
(etra) it-ebooks - Python 單元測(cè)試自動(dòng)化教程(機(jī)翻)_第4頁(yè)
(etra) it-ebooks - Python 單元測(cè)試自動(dòng)化教程(機(jī)翻)_第5頁(yè)
已閱讀5頁(yè),還剩146頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TableofContents

Python單元測(cè)試白動(dòng)化教程

Python單元測(cè)試自動(dòng)化教程

—?、Python簡(jiǎn)介

二、入門指南

三、單元測(cè)試

四、nose和nose2

五、pytest

六、Selenium測(cè)試

七、在Python中記錄日志

八、提示和技巧

Python單元測(cè)試自動(dòng)化教程

來(lái)源:https:〃gitee.com/apachecn/apachecn-python-zh-pt4/blob/master/d

ocs/py-unit-test-auto/SUMMARY.md

Python單元測(cè)試自動(dòng)化教程

原文:https:〃gitee.com/apachecn/apachecn-python-zh-pt4/blob/master/d

ocs/py-unit-test-auto/README.md

原文:PythonUnitTestAutomation

協(xié)議:CCBY-NC-SA4.0

階段:機(jī)翻(1)

利欲驅(qū)人萬(wàn)火牛,江湖浪跡一沙鷗。一一陸游《秋思》

?在線閱讀

?在線閱讀(Gitee)

?ApacheCN學(xué)習(xí)資源

貢獻(xiàn)指南

本項(xiàng)目需要校對(duì),歡迎大家提交PullRequesto

請(qǐng)您勇敢地去翻譯和改進(jìn)翻譯。雖然我們追求卓越,但我們并不要求您做到十

全十美,因此請(qǐng)不要擔(dān)心因?yàn)榉g上犯錯(cuò)一一在大部分情況下,我們的服務(wù)器

已經(jīng)記錄所有的翻譯,因此您不必?fù)?dān)心會(huì)因?yàn)槟氖д`遭到無(wú)法挽回的破壞。

(改編自維基百科)

聯(lián)系方式

負(fù)責(zé)人

?飛龍:562826179

其他

?在我們的apachecn/apachecn-python-zh-pt4github上提issue.

?發(fā)郵件到Emai1:apachecn@163.com.

?在我們的組織學(xué)習(xí)交流群中聯(lián)系群主/管理員即可.

下載

Docker

dockerpullapachecn0/apachecn-python-zh-pt4dockerrun-tid-p<port>:80apac

hecnO/apachccn-python-zh-pt4#訪問(wèn)http://localhost:{port)查看文檔

PYPI

pipinstallapachecn-python-zh-pt4apachecn-python-zh-pt4<port>#訪問(wèn)http:/

/localhost:{port}查看文檔

NPM

npminstall-gapachecn-python-zh-pt4apachecn-python-zh-pt4<port>#訪問(wèn)htt

p://localhost:{port}查看文檔

其它協(xié)議

霞鷲文楷采用SIL開(kāi)放字體協(xié)議1.1。

贊助我們

熊支嘏

一、Python簡(jiǎn)介

原文:https:〃gitee.com/apachecn/apachecn-python-zh-pt4/blob/master/d

ocs/py-unit-test-auto/1.md

我希望你已經(jīng)瀏覽了介紹部分。如果你還沒(méi)有,那么我推薦你讀一讀,因?yàn)樗?/p>

會(huì)幫助你理解這本書的內(nèi)容和哲學(xué)。

讓我們從學(xué)習(xí)Python的歷史和背景開(kāi)始這次冒險(xiǎn)之旅。

我個(gè)人覺(jué)得Python很神奇,已經(jīng)被它迷住了。Python是一種簡(jiǎn)單而強(qiáng)大的編

程語(yǔ)言。當(dāng)使用Python時(shí),很容易關(guān)注給定問(wèn)題的解決方案的實(shí)現(xiàn),因?yàn)槌?/p>

序員不必?fù)?dān)心編程語(yǔ)言的語(yǔ)法。

Python的歷史

Python誕生于20世紀(jì)80年代末。吉多?范?羅蘇姆于1989年底在荷蘭的

CentrumWiskunde&Informatica(國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所)開(kāi)始實(shí)施這

一計(jì)劃。Python是ABC編程語(yǔ)言的繼承者,ABC編程語(yǔ)言本身就是受SETL

的啟發(fā)。1991年2月,VanRossum向alt.sources新聞組發(fā)布了Python代碼。

Python這個(gè)名字的靈感來(lái)自電視節(jié)目“巨蟒劇團(tuán)的飛行馬戲團(tuán)”,因?yàn)閂anR

ossum是巨蟒劇團(tuán)的忠實(shí)粉絲。

VanRossum是Python的主要作者。他在指導(dǎo)Python的發(fā)展和演變中發(fā)揮了

核心作用。他擁有Python的終身。慈?獨(dú)裁者的稱號(hào)。2018年,他卸任了那個(gè)

角色。截至撰寫本版時(shí),他在微軟工作。

Python的核心哲學(xué),被稱為Python的*禪,*在PEP-20中有解釋,可以在h

ttps:〃www.python,org/dev/peps/pep-0020找至tl。

它是20個(gè)軟件原則的集合,如下所示:

?漂亮總比難看好。

?顯性比隱性好。

?簡(jiǎn)單比復(fù)雜好。

?復(fù)雜總比復(fù)雜好。

?平面比嵌套好。

?疏比密好。

?可讀性很重要。

?特例不足以特殊到打破規(guī)則。

?實(shí)用性勝過(guò)純粹性。

?錯(cuò)誤永遠(yuǎn)不會(huì)無(wú)聲無(wú)息地過(guò)去。

?除非明確沉默。

?面對(duì)曖昧,拒絕猜測(cè)的誘惑。

?應(yīng)該有一種一一最好只有一種一一顯而易見(jiàn)的方法來(lái)做這件事。

?盡管這種方式一開(kāi)始可能并不明顯,除非你是荷蘭人。

?現(xiàn)在總比沒(méi)有好。

?雖然從來(lái)沒(méi)有比現(xiàn)在更好。

?如果實(shí)現(xiàn)很難解釋,這是一個(gè)壞主意。

?如果實(shí)現(xiàn)很容易解釋,這可能是一個(gè)好主意。

?名稱空間是一個(gè)非常棒的想法一一讓我們多做一些吧!

Python的特性

下面幾節(jié)討論P(yáng)ython的一些特性,這些特性在編程社區(qū)中已經(jīng)變得流行和受

歡迎。

簡(jiǎn)單的

Python是一種簡(jiǎn)單的極簡(jiǎn)主義語(yǔ)言。閱讀一個(gè)寫得很好的Python程序,會(huì)讓

你覺(jué)得好像在讀英文文本。

簡(jiǎn)單易學(xué)

由于其簡(jiǎn)單和類似英語(yǔ)的語(yǔ)法,Python對(duì)于初學(xué)者來(lái)說(shuō)非常容易學(xué)習(xí)。

這就是為什么現(xiàn)在它作為第一編程語(yǔ)言被教授給學(xué)習(xí)編程入門和編程101課程

的高中生和大學(xué)生的主要原因。新一代的程序員正在學(xué)習(xí)Python作為他們的

第一門編程語(yǔ)言。

易于閱讀

與其他高級(jí)編程語(yǔ)言不同,Python沒(méi)有提供太多混淆代碼和使其不可讀的規(guī)定。

與用其他編程語(yǔ)言編寫的代碼相比,Python代碼的類似英語(yǔ)的結(jié)構(gòu)更容易閱讀。

與C和C++等其他高級(jí)語(yǔ)言相比,這使得它更容易理解和學(xué)習(xí)。

易于維護(hù)

由于Python代碼易于閱讀、理解和學(xué)習(xí),任何維護(hù)代碼的人都可以在相當(dāng)短

的時(shí)間內(nèi)熟悉其代碼庫(kù)。我可以從維護(hù)和增強(qiáng)由bash和Python2組合編寫

的大型遺留代碼庫(kù)的個(gè)人經(jīng)歷中證明這一點(diǎn)。

開(kāi)放源碼

Python是一個(gè)開(kāi)源項(xiàng)目。這意味著它的源代碼是免費(fèi)的。您可以根據(jù)自己的需

要對(duì)它進(jìn)行修改,并在應(yīng)用中使用原始的和修改過(guò)的代碼。

高級(jí)語(yǔ)言

在編寫Python程序時(shí),您不必管理低級(jí)別的細(xì)節(jié),如內(nèi)存管理、CPU計(jì)時(shí)和

調(diào)度過(guò)程。所有這些任務(wù)都由Python解釋器管理。你可以直接用易于理解的、

類似英語(yǔ)的語(yǔ)法寫代碼。

輕便的

Python已經(jīng)移植到很多平臺(tái)。所有Python程序都可以在這些平臺(tái)上運(yùn)行,不

需要任何修改,如果你足夠小心避免任何系統(tǒng)相關(guān)的特性。您可以在GNU/Linu

x、WindowsAndroid>FreeBSD、macOS>iOS>Solaris^0S/2>Amiga、AROS、

AS/400,BeOS、OS/390、z/OS、PalmOS、QNX、VMS、Psion、Acorn>RISCOS、

VxWorks、PlayStation、SharpZaurus、WindowsCE和PocketPC上使用Pyt

hon。

解釋

Python是一種直譯語(yǔ)言。用C、C++和Java等高級(jí)編程語(yǔ)言編寫的程序首先

被編譯。這意味著它們首先被轉(zhuǎn)換成中間格式。當(dāng)您運(yùn)行程序時(shí),這個(gè)中間格

式由鏈接器/加載器從輔助存儲(chǔ)器(即硬盤)加載到內(nèi)存(ram)中。所以,C、C++

和Java有獨(dú)立的編譯器和連接器/加載器。Python就不是這樣了。Python直

接從源代碼運(yùn)行程序。您不必?fù)?dān)心編譯和鏈接到適當(dāng)?shù)膸?kù)。這使得Python程

序真正具有可移植性,因?yàn)槟梢詫⒊绦驈囊慌_(tái)計(jì)算機(jī)復(fù)制到另一臺(tái)計(jì)算機(jī),

只要在目標(biāo)計(jì)算機(jī)上安裝了必要的庫(kù),程序就可以正常運(yùn)行。

面向?qū)ο?/p>

Python支持面向?qū)ο蟮木幊谭独?。在面向?qū)ο蟮木幊陶Z(yǔ)言中,程序是圍繞結(jié)合

數(shù)據(jù)和相關(guān)功能的對(duì)象構(gòu)建的。Python是一種非常簡(jiǎn)單但功能強(qiáng)大的面向?qū)ο?/p>

編程語(yǔ)言。

可擴(kuò)張的

Python的一個(gè)特性就是可以從Python程序中調(diào)用C和C++例程。如果希望

應(yīng)用的核心功能運(yùn)行得更快,可以用C/C++編寫那部分代碼,在Python程序

中調(diào)用(C/C++程序一般比Python運(yùn)行得快)。

豐富的圖書館

Python預(yù)裝了一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù)。標(biāo)準(zhǔn)庫(kù)具有現(xiàn)代編程語(yǔ)言的所有基本特征。

它提供了數(shù)據(jù)庫(kù)、單元測(cè)試(我們將在本書中探討)、正則表達(dá)式、多線程、網(wǎng)

絡(luò)編程、計(jì)算機(jī)圖形、圖像處理、GUI和其他工具。這是Python的內(nèi)置電池

理念的一部分。

除了標(biāo)準(zhǔn)庫(kù),Python還有一個(gè)龐大且不斷增長(zhǎng)的第三方庫(kù)。這些庫(kù)的列表可以

在Python包索引(https:〃pypi.org/)中找到。在本書中,我們將探索一些用

于測(cè)試自動(dòng)化的庫(kù),如unittest、nose、nose2>pytest和selenium。我還參與了

科學(xué)計(jì)算和計(jì)算機(jī)視覺(jué)庫(kù)的工作并撰寫了大量文章,比如numpy、scipy、matplo

tlib>pillow>scikit-image和OpenCVo

粗野的

Python通過(guò)其處理錯(cuò)誤的能力來(lái)提供健壯性。遇到的錯(cuò)誤的完整堆棧跟蹤是可

用的,這使得程序員的生活更容易忍受。運(yùn)行時(shí)錯(cuò)誤被稱為異常。允許處理這

些錯(cuò)誤的特性被稱為舁常處理加制。

快速原型

Python忤為快速成型工具。正如您所讀到的,Python擁有豐富的庫(kù)并且易于

學(xué)習(xí),因此許多軟件架構(gòu)師越來(lái)越多地使用它作為工具,在很短的時(shí)間內(nèi)將他

們的想法快速原型化為工作模型。

內(nèi)存管理

在匯編語(yǔ)言和像c和C++這樣的編程語(yǔ)言中,內(nèi)存管理是程序員的責(zé)任。這是

手頭任務(wù)之外的。這給程序員造成了不必要的負(fù)擔(dān)。在Python中,Python解

釋器處理內(nèi)存管理。這有助于程序員避開(kāi)內(nèi)存問(wèn)題,專注于手頭的任務(wù)。

強(qiáng)大的

Python擁有現(xiàn)代編程語(yǔ)言的一切。它用于計(jì)算機(jī)視覺(jué)、超級(jí)計(jì)算、藥物發(fā)現(xiàn)、

科學(xué)計(jì)算、模擬和生物信息學(xué)等應(yīng)用。全世界數(shù)百萬(wàn)程序員使用Pythono許多

大型組織,如NASA、Google、SpaceX和Cisco,都在他們的應(yīng)用和基礎(chǔ)設(shè)施

中使用Pythono

社區(qū)支持

我發(fā)現(xiàn)這是Python最吸引人的特性。正如您所讀到的,Python是開(kāi)源的,在

全世界有一個(gè)由近百萬(wàn)程序員組成的社區(qū)(可能更多,因?yàn)榻裉斓母咧猩趯W(xué)

習(xí)Python)?這意味著互聯(lián)網(wǎng)上有很多論壇支持遇到障礙的程序員。我提出的

與Python相關(guān)的問(wèn)題沒(méi)有一個(gè)是沒(méi)有答案的。

蟒蛇3

Python3發(fā)布于2008年。Python開(kāi)發(fā)團(tuán)隊(duì)決定去掉Python語(yǔ)言的一些冗

余特性,簡(jiǎn)化它的一些特性,糾正一些設(shè)計(jì)缺陷,并添加一些急需的特性。

人們決定,主要修訂號(hào)是有保證的,并且最終發(fā)布的版本不會(huì)向后兼容。Pytho

n2.x和3.x應(yīng)該并行共存,以便程序員社區(qū)有足夠的時(shí)間將他們的代碼和第

三方庫(kù)從2.x遷移到3.x.Python2.x代碼在許多情況下無(wú)法在Python3

上運(yùn)行,因?yàn)?.x和3.x之間存在顯著差異。

Python2和Python3的區(qū)別

以下是Python2和Python3之間最顯著的區(qū)別。讓我們簡(jiǎn)單地看一下它們:

?print。功能

這可能是Python2和Python3之間最顯著的區(qū)別。Python2的print語(yǔ)句

在Python3中被替換為print。函數(shù)。

?整數(shù)除法

在Python3中,為了數(shù)學(xué)正確性,整數(shù)除法的性質(zhì)已經(jīng)改變。在Python2

中,兩個(gè)整數(shù)操作數(shù)相除的結(jié)果是一個(gè)整數(shù)。但是,在Python3中,它是一

個(gè)浮點(diǎn)值。

?省略xrangeO

在Python2中,為了創(chuàng)建可迭代對(duì)象,使用了xrangeO函數(shù)。在Python3中,

range。的實(shí)現(xiàn)很像xrangeO。因此,不再需要單獨(dú)的xrange()。在Python3中

使用xrangeO會(huì)引發(fā)~*個(gè)nameError。

?引發(fā)異常

在Python3中,必須將異常參數(shù)(如果有的話)括在括號(hào)中,而在Python2

中,這是可選的。

?處理異常

在Python3中,在處理異常時(shí),需要在參數(shù)前使用as關(guān)鍵字來(lái)處理參數(shù)。在

Python2中,不需要。

?新樣式類別

Python2支持舊的和新的樣式類,而Python3只支持新的樣式類。默認(rèn)情況

下,Python3中創(chuàng)建的所有類都使用新的樣式類。

?Python3的新特性

ThefollowingnewfeaturesofPython3havenotbeenbackportedtoPy

thon2:

1.默認(rèn)情況下,字符串是Unicode的

2.清除Unicode/字節(jié)分隔

3.異常鏈接

4.函數(shù)注釋

5.僅關(guān)鍵字參數(shù)的語(yǔ)法

6.擴(kuò)展元組解包

7.非局部變量聲明

從這個(gè)列表中,你會(huì)經(jīng)常在本書的代碼示例中使用到print。、新型類和異常。

為什么使用Python3

從前面的列表中,您將會(huì)在本書的代碼示例中頻繁使用新型類和異常。

Python的wiki頁(yè)面(https://wiki.python.org/moin/Python20rpython3)是這樣

說(shuō)的:

對(duì)于任何新的開(kāi)發(fā)都強(qiáng)烈推薦Python3。

新一代程序員將Python3作為他們的第一門編程語(yǔ)言。當(dāng)他們熟悉Python

編程的概念和哲學(xué)時(shí),他們會(huì)逐漸了解Python2,這樣他們也可以使用遺留代

碼庫(kù)。許多組織已經(jīng)開(kāi)始將代碼庫(kù)從Python2遷移到Python3。Python中

的所有新項(xiàng)目都大量使用Python3。在撰寫本書的這個(gè)版本時(shí),Python2幾

乎已經(jīng)壽終正寢了。大多數(shù)組織正在將他們的遺留代碼庫(kù)從Python2遷移到

Python3。隨著時(shí)間的推移,Python2中的代碼越來(lái)越少,要么被放棄,要么

被轉(zhuǎn)換到Python3o將Python2代碼轉(zhuǎn)換成Python3是一個(gè)漫長(zhǎng)而繁瑣的

過(guò)程。許多組織都是根據(jù)需要來(lái)做的。大多數(shù)組織遵循的一般經(jīng)驗(yàn)法則是,如

果代碼有效,他們就不碰它。然而,正如我已經(jīng)說(shuō)過(guò)的,所有涉及Python的

新項(xiàng)目都是從Python3開(kāi)始的。展望未來(lái),將遺留的Python2代碼庫(kù)轉(zhuǎn)換

為Python3將為專業(yè)人員帶來(lái)技術(shù)上的挑戰(zhàn)和經(jīng)濟(jì)上的巨大機(jī)遇。

我個(gè)人認(rèn)為這些是使用Python3的很好的理由。

安裝Python3

本節(jié)討論如何在各種常用的計(jì)算機(jī)操作系統(tǒng)上安裝Python3o

在Linux上安裝

Linux有許多流行的發(fā)行版。Python3預(yù)裝在許多流行的發(fā)行版中。

安裝在Debian、Ubuntu和衍生工具上

Python3解釋器預(yù)裝在Debian、Ubuntu及其衍生產(chǎn)品的最新版本中。

在Fedora和CentOS上安裝

Python3解釋器預(yù)裝在Fedora和CentOS的最新版本中。

Note

在大多數(shù)最新的Linux發(fā)行版上,默認(rèn)情況下會(huì)安裝兩個(gè)版本的Python(Pyt

hon2和Python3)□Python2的解釋器是一個(gè)名為python的二進(jìn)制可執(zhí)行文

件,Python3的解釋器是另一個(gè)名為python3的二進(jìn)制可執(zhí)行文件。您可以使

用python3—V或python3—version來(lái)檢查安裝在您的Linux計(jì)算機(jī)上的Python

3解釋器的版本。同樣,你可以使用whichpython3命令來(lái)確定解釋器在磁盤上

的位置。

在macOSX上安裝

在macOSX上,Python2解釋器是默認(rèn)安裝的,可以使用python命令從終端

調(diào)用。如果你想用Python3,你必須安裝它。確保計(jì)算機(jī)連接到互聯(lián)網(wǎng),并在

終端中運(yùn)行brewinstallpython3命令。這將安裝Python3。它還將安裝其他工

具,如pip、setuptools和wheel。

一■旦安裝完成,進(jìn)入終端并鍵入python3—V或python3―version來(lái)檢查安裝的P

ython3解釋器的版本。

在Windows上安裝

在Windows操作系統(tǒng)中,Python3的安裝需要更多的努力。Python2或Pyt

hon3沒(méi)有預(yù)裝在Windows計(jì)算機(jī)上。為了安裝它,你必須在https:〃www.py

thon.org/downloads訪問(wèn)Python網(wǎng)站的下載部分,如圖17所不。

圖1-1

網(wǎng)站上的Python下載部分

選擇Python3.5.2o(如果本書出版后有新的Python穩(wěn)定版本,數(shù)字5和2

可能會(huì)改變。)這將下載Python3的安裝文件。下載后打開(kāi)安裝文件。點(diǎn)擊圖

1-2所示對(duì)話框中的運(yùn)行按鈕。

Doyouwarttomnthisfile?

Name:C\U$ers\acer\Download$\python-3.5.2.exe

BPublisher:PythonSoftwareFoundation

Type:Application

From:C\User$\acer\Downloads\python-3.5.2.exe

RunCancel

,:Alwaysaskbeforeopeningthisfile

@TWhilefilesfromtheIntemelcanbeuseful,thisfiletypecan

'|)potentiallyharmyourcomputer.Onlyrunsoftwarefrompublishers

'Jyoutrust.遍辿典2

圖1-2

打開(kāi)文件-安全警告對(duì)話框

Note

根據(jù)設(shè)置,您可能需要管理員權(quán)限才能在Windows計(jì)算機(jī)上安裝Python3(或

任何其他程序)。如果您處于組織環(huán)境中,請(qǐng)向您的系統(tǒng)管理團(tuán)隊(duì)咨詢此信息。

如果您使用的是Windows7,根據(jù)您計(jì)算機(jī)的更新?tīng)顟B(tài),您可能會(huì)遇到如圖上

3所示的消息框。

Setupfailed

Oneormoreissuescausedthesetuptofail.Pleasefixtheissuesand

thenretrysetup.Formoreinformationseethe她

Windows1ServicePack1andallapplicableupdatesarerequiredto

installPython3.5.2(32W

PleaseuM跳yowm疝他andthenrestarttheinstallation.

python

for

windows

圖1-3

Windows7的安裝失敗消息

通過(guò)安裝任何Windows更新來(lái)更新操作系統(tǒng),然后重新運(yùn)行安裝文件。成功后

會(huì)出現(xiàn)圖W中的窗口。

InstallPython3.5,2(32-bit)

SelectInstallNowIoinstallPythonwithdefaultsettings,orchoose

Customizetoenableordisablefeatures.

$InstallNow

C川娜\swidh腳pDaWoc腫岬m卿ho刪對(duì)劃

IncludesBE,pipanddocumentation

Cftatesshortcutsandfilta?ocita

4Customizeinstallation

Chooselocationandfeatures

ZInstalllauncherforallusers(recommended)

windows@AddPython15toPATHCancel

圖1-4

Python安裝窗口

選中將Python3.x添加到路徑復(fù)選框。這將確保Python被添加到PATH系統(tǒng)

變量中,并且您將能夠在安裝后從Windows的命令提示符(cmd)訪問(wèn)Python。

單擊“立即安裝”按鈕,繼續(xù)安裝向?qū)?。安裝完成后,將顯示一條成功消息。

運(yùn)行Python程序和Python模式

現(xiàn)在,您已經(jīng)為Python編程設(shè)置了環(huán)境?,F(xiàn)在,您可以從Python的一個(gè)簡(jiǎn)

單概念開(kāi)始。Python有兩種基本模式一一普通模式和交互模式。讓我們?cè)敿?xì)看

看這些模式。

對(duì)話方式

Python的交互模式是一個(gè)命令行shell,為每個(gè)執(zhí)行的語(yǔ)句提供即時(shí)輸出。它

還將以前執(zhí)行的語(yǔ)句的輸出存儲(chǔ)在活動(dòng)內(nèi)存中。當(dāng)Python解釋器執(zhí)行新語(yǔ)句

時(shí),在評(píng)估當(dāng)前輸出時(shí),會(huì)考慮之前執(zhí)行的整個(gè)語(yǔ)句序列。你必須在Linux/ma

cOS的命令提示符下輸入python3,在Windows的命令提示符下輸入python才能

調(diào)用Python3解釋器進(jìn)入交互模式,如下所示:

Python3.4.2(default,Oct192014,13:31:11)[GCC4.9.1]onlinuxType"help

〃,“copyright","credits"or"license"formoreinformation.?>

您可以在這種交互模式下直接執(zhí)行Python語(yǔ)句,就像在操作系統(tǒng)外殼/控制臺(tái)

中運(yùn)行命令一樣,如下所示:

?>printCHelloWorld!')HelloWorld!>>>

你不會(huì)在書中使用互動(dòng)模式。然而,這是檢查小代碼片段(5到10行)最快的

方法。您可以使用exit。語(yǔ)句退出交互模式,如下所示:

>>>exit()$

腳本模式

腳本模式是Python解釋器執(zhí)行Python腳本文件(.py)的模式。

創(chuàng)建一個(gè)名為test,py的文件,并將print('HelloWorld!')語(yǔ)句添加到該文件中。

保存文件并使用Python3解釋器運(yùn)行它,如下所示。

$python3test.pyHelloWorld!$

在本例中,python3是解釋器,test,py是文件名。如果Pythontest,py文件不在

您調(diào)用python3解釋器的同一個(gè)目錄中,您必須提供Python文件的絕對(duì)路徑。

Note

對(duì)于所有的Linux和Mac計(jì)算機(jī),Python3解釋器的命令是python3。對(duì)于

Windows,只是python,假設(shè)Windows電腦上只安裝了Python3,并且在安裝

過(guò)程中或者安裝后手動(dòng)將其位置添加到PATH變量中。在本書中,我使用Linux

命令提示符(在我的RaspberryPi4上)來(lái)運(yùn)行代碼示例。舉幾個(gè)例子,我會(huì)

在使用Windows的地方明確提到它。

Python的ide

集成開(kāi)發(fā)環(huán)境(IDE)是一個(gè)軟件套件,擁有編寫和測(cè)試程序的所有基本工具。典

型的IDE有一個(gè)編譯器、一個(gè)調(diào)試器、一個(gè)代碼編輯器和一個(gè)構(gòu)建自動(dòng)化工具。

大多數(shù)編程語(yǔ)言都有各種各樣的ide讓程序員過(guò)得更好。Python也有許多id

e。讓我們來(lái)看看Python的幾個(gè)ide。

閑置的

IDLE代表集成開(kāi)發(fā)環(huán)境。它與Python捆綁在一起。IDLE3是針對(duì)Python3

的。很受Python初學(xué)者的歡迎。在安裝了Python3的Linux計(jì)算機(jī)上,只

需在命令提示符下鍵入idle3。圖一是IDLE3代碼編輯器截圖和交互提示。

口蚪卜H琳臥壯

Python3.4.2(MlOctl)20U.1):31:11)

[(Kt4,9,1]onhnui

Typt,copynghC,"cr?li?,?flictn州門”nortinfoiotion.

?>

FileTabsHelp

IXp?kM$:0KWS:

colhsioo$:0Uqmi

RXbyt?:O(0,0B)

linktflcapiLoullod

MMldr:127.0.0.

Maddr:

Wl懈鞏KaR如

RX必er

IXMtktts:?5?t

collisions^tit微幽FputMfiptwtMom腫

WbytH:J?80(;

Linktntaplthfr

in?t

ineuMdr:feed

UPm(A$T加

Wpxket$:5t3(

TX網(wǎng)弟硼<

(0111110^:0w

—WbytesUWOI(

圖1-5

IDLE3在樹莓Pi上運(yùn)行

如果IDLE沒(méi)有默認(rèn)安裝在您的Linux發(fā)行版上,那么您必須手動(dòng)安裝它。對(duì)

于Debian及其衍生產(chǎn)品,安裝命令如下:

sudoapt-getinstallidle

Eclipse的PyDev插件

如果你是一個(gè)經(jīng)驗(yàn)豐富的Java程序員,你可能已經(jīng)在Eclipse上工作過(guò)。Ec

lipse是一個(gè)非常流行的JavaIDE,它也可以用于其他編程語(yǔ)言。PyDev是一

個(gè)用于Eclipse的PythonIDE,它可以用于Python、Jython和IronPython

開(kāi)發(fā)(見(jiàn)圖1-6)。您可以從位于www.pydev.org的Eclipsemarketplace安

裝PyDevo

,珈冊(cè)出”.碑蝴即<婢汗,糧幄"、'

他伊網(wǎng)?中叫“曬K恤曬s加曬腳

I八A04AOQW,

CVM"IN岫W。

)帆對(duì)雌麗?/朦fW'M'dM儂*.

,心5

J制*4W徜帆M?■(蜘(Mnn

,施,力1i(

,&Ml,獻(xiàn)M獷'W%.K欣咖他娜如,外1的

80小/.pMo確瞰即*<,螂

84r刪

8M如?“心,憫

2仙1做熱奧麗跚

日旅耐抑山溝

9M.M能創(chuàng)則:?

I_.豆咐*即加丹_________[i1

B”,"2甲生M"川力忙加MMQC'jlXk*力%組Q、i\xX嚴(yán)q

IM附Ma4a

用iiK.mtmi■ut(同砌優(yōu)地"領(lǐng)叩P0?-V

Hl呻然?,?毗

IPNlLfUuin*013

?H??EW0|,

W候的tti郵uc&irLM

:?呼爾雄心出

UMlt.hltMM"m1MOM

M>uui?0me,l?'M則

制M:f.nitiHi?Md

1*陽(yáng)*MMW

IMpUM(]X,M川一h4!"!"〃M婚>r>fT

?毗WK仲斌帆觸枷1

10pifit(itr0))'

III

0,M4AEm

HI\

,八一.,—一.——....1M?

"”…<...,…..一……k…―一.,?

?「一j―,?IJi—.—

Ox*扁

IKMRIK]:wlf.dfKinaUgohU

[mn網(wǎng):口飾rg\MM\WC\呻恨期岫r

ixiinin|tMit.iAiuiUM

|KtmIH|tClllMit

阿門網(wǎng):IMUUU??lt?“比明umiiH?虱聊%umu

[SGIKIFX|iCiltfi4irIMUUUiHu憎*IMbytMuHr

IKUR:附PM.t冰,i啜It?J四僅'X。MW,,?UHtMMWiM'UM1!A'Mtiter\?puet':?/岫出叫?即l蝴虱Wi”,

win:ni:網(wǎng)h:tviu"NiMtic。川代麗?匕\曲曲加刖即\啪叫61時(shí)刈四邯八加加“加1附毗\3火

(KKRIK|iJmlotfUt?bymMmntvtibttlh

*

?

??

圖1-6

PyDev的Eclipse

蓋尼

Geany(見(jiàn)圖H7)是一個(gè)文本編輯器,它使用GTK+工具包,具有集成開(kāi)發(fā)環(huán)境

的基本特性。它支持許多文件類型,并有一些不錯(cuò)的功能。查看https:〃WWW.g

eany.org了解更多詳情。

0?而也「/home/?疝即*(忡.叫同「Griny

出汝*嫌惻Qod1*1岫M肺

口中通5部??儲(chǔ)周?iniir

加岫阿岫曲串Mmrt〈X癡毒

卜加耐/1W口

|211editot.c?thisfileispanofGe孫afastiMli-wigMUE

夕聊曲.《|帆1加1J?F

,Copyright2005*2001EnncoTrdjtr蝴f闌蚓HwMltlwwi制收》

,Copyright淵,㈱NickTt?hnw?i(MdotItrthi??i(itIbtinttmttI4otK?i>

「峨州《.”幽|?161

外向.d叫陽(yáng)(則加4;?帕㈣州isfrettoftnrt;nw(Mrtdittribvttitind/oricdify

1itunderthtternoftheAUGeneralMliclittnili$pubhshdby

,喊m燦e網(wǎng)9,theFreeSoftvireWitRn,eitherversion2ofthelicense,or

101(ityouroption)nyliterversion

夕毗”研制四7|i

夕帆喇M,This州“Mis佃MMM〉tMhopeMMitnilbeuseful

,butflW刪N陶IE;vithouleventhe闡血virnntyof

夕帆t,bk|MM|M?NEKHAWlOlLnYorF11KSSFORAPWIIQLMPlW.Seethe

@岷。.則去小叫n.*M(MOtMfilPublicUctnstf?twrtdttiiU.

1

’i敝腳地(M?帆17,Youihouldhivtrtetbedl姍oftht(MJftmlPublicLuenw

?帆神thispr^rn;ifwt,vrittlothtFreeftftviri

夕麗聊MeJ惻郵

?FowditMfoe,675蚓MM”*,M02139.USA

夕wtos呻也郵|周120i

21,川tWor.c31$5?M8^2$18:S7:00Zehtl6|

夕血.叫咖1網(wǎng)jjll/

夕冰《加幽網(wǎng)聊1

*|24娜/?I

力帆b蹴網(wǎng)31tlilteditor.h

’(帆瞅川網(wǎng)?EditorTehtedfunctionslorfrefGeinyEditor.

?GtinyusestheScintilbeditinjvidget.indthisfile?xstlybuiltaround

夕(帆M他網(wǎng)M|2s,ScmtiUi'sfunctiomlity.

為?JwwwgpeEh

夕世冊(cè).M”呻的0|

1/

--加上“?.…i?八,…噌JJ|9/*tillbichWtheScintillavid^et(ScmtiUi0b|ed).J]

'|]EIIJ—一"……】w

St仙190(.41Thh<sGe4nyOli,

Comphr190U8NewfileWied*opened

Mnu^i190(:51^ltuMd(l?$td

的岫1906%Ne/lw/enn碗作Wge卿加枷n.(枷MID

IM"S"皺/hww/e」附呻(W供螂/玳陶啪ent<openedP)

li:0lMNi版雌wltt帆《咖姍瞰佩(o腳㈣

k446WQINSYAI啪㈣5rc^UYM蜘cC憾曲wn

圖1-7

蓋尼

PyCharm

JetBrains的PyCharm是Python的另一個(gè)IDE,它包含了強(qiáng)大的功能,如調(diào)

試器、代碼檢查工具、版本控制和集成的單元測(cè)試運(yùn)行器。它是一個(gè)跨平臺(tái)的

IDE,可用于Windows.macOS和Linux發(fā)行版。它的社區(qū)版是免費(fèi)下載的。

更多信息請(qǐng)?jiān)L問(wèn)其主頁(yè)https:〃www.jetbrains,com/pycharm/。

由于所涉及的庫(kù)的性質(zhì),本書中的代碼示例更適合在命令提示符下執(zhí)行。我個(gè)

人更喜歡把邏輯和代碼寫在紙上(沒(méi)錯(cuò)!用一張紙?。┤缓笫褂脦в姓Z(yǔ)法突出顯

示的純文本編輯器。比如我推薦Windows上的Notepad++或者Linux上的na

no、Leafpad、gedit。您可以使用IDLE3或Geany來(lái)編寫和編譯代碼。

然而,大多數(shù)代碼示例都應(yīng)該從命令行執(zhí)行。

Exercise1-1

?訪問(wèn)并探索位于www.python,org的Python主頁(yè)。

?在https:〃www.python,org/about/success/閱讀Python在哪里部署

成功。

?訪問(wèn)并瀏覽位于https:〃docs.python.org/3/的Python文檔頁(yè)面。

?在https:〃docs,python,org/3/whatsnew/index.html查看Python最新

版本的新特性。

?為了練習(xí),用Python編寫簡(jiǎn)單的程序。例如,您可以使用迭代和遞

歸技術(shù)為斐波那契數(shù)列和階乘計(jì)算編寫程序。

完成這個(gè)練習(xí),更好地理解Python3的背景。

結(jié)論

在本章中,你學(xué)習(xí)了Python的背景、歷史和特性。您還學(xué)習(xí)了Python2和

Python3之間的重要區(qū)別。您學(xué)習(xí)了如何在腳本和交互模式下安裝和使用Pyt

hon3。最后,您了解了一些流行的Pythonide。在下一章中,您將從測(cè)試自

動(dòng)化的概念開(kāi)始,并查看一個(gè)簡(jiǎn)單的Python測(cè)試自動(dòng)化庫(kù),名為doctest。你

也簡(jiǎn)單看一下pydoc。

二、入門指南

原文:https:〃gitee.com/apachecn/apachecn-python-zh-pt4/blob/master/d

ocs/py-unit-test-auto/2.md

在前一章中,您學(xué)習(xí)了如何在Linux、macOS和Windows計(jì)算機(jī)上設(shè)置Pytho

n3環(huán)境。您還了解了一些流行的Pythonide。在這一章中,你將從測(cè)試自動(dòng)

化的概念開(kāi)始。然后,您將探索一種學(xué)習(xí)Python3中測(cè)試自動(dòng)化框架的簡(jiǎn)單

方法,稱為doctest。

軟件測(cè)試概念簡(jiǎn)介

教科書上對(duì)軟件測(cè)試的定義是,它是執(zhí)行一個(gè)程序或應(yīng)用來(lái)發(fā)現(xiàn)任何錯(cuò)誤的過(guò)

程。通常,在軟件測(cè)試的過(guò)程中有多個(gè)涉眾。涉眾包括測(cè)試人員、管理團(tuán)隊(duì)、

顧問(wèn)、業(yè)務(wù)、客戶和最終用戶。對(duì)于大中型項(xiàng)目,軟件測(cè)試是為了確定軟件在

各種輸入和條件下是否如預(yù)期的那樣運(yùn)行。

單元測(cè)試

單元測(cè)試是一種軟件測(cè)試方法,在這種方法中,程序的單個(gè)組件,稱為*單元,

*使用所有需要的依賴項(xiàng)進(jìn)行獨(dú)立測(cè)試。單元測(cè)試大部分是由程序員完成的,他

們?yōu)閱卧帉懗绦颉T谳^小的項(xiàng)目中,這是非正式的。在大多數(shù)非常大規(guī)模的

項(xiàng)目中,單元測(cè)試是正式開(kāi)發(fā)過(guò)程的一部分,有適當(dāng)?shù)奈臋n和適當(dāng)?shù)臅r(shí)間表/工

作分配。

測(cè)試自動(dòng)化

測(cè)試自動(dòng)化是測(cè)試場(chǎng)景和案例結(jié)果的自動(dòng)執(zhí)行和報(bào)告。在大多數(shù)大型復(fù)雜的項(xiàng)

目中,測(cè)試過(guò)程的許多階段都是自動(dòng)化的。有時(shí)候自動(dòng)化測(cè)試的工作量是如此

之大,以至于有一個(gè)獨(dú)立的自動(dòng)化項(xiàng)目,有一個(gè)獨(dú)立的團(tuán)隊(duì)致力于此,包括一

個(gè)獨(dú)立的報(bào)告結(jié)構(gòu)和獨(dú)立的管理。有幾個(gè)領(lǐng)域和階段的測(cè)試可以自動(dòng)化。像代

碼庫(kù)和第三方API這樣的各種工具被用于單元測(cè)試。有時(shí)候,單元測(cè)試的代碼

也是以自動(dòng)化的方式生成的。單元測(cè)試是自動(dòng)化的主要候選。

自動(dòng)化單元測(cè)試的好處

自動(dòng)化單元測(cè)試有很多原因。讓我們逐一考慮。

?時(shí)間和努力

隨著代碼庫(kù)的增長(zhǎng),要進(jìn)行單元測(cè)試的模塊數(shù)量也在增長(zhǎng)。手動(dòng)測(cè)試非常耗時(shí)。

為了減少手動(dòng)測(cè)試的工作量,您可以自動(dòng)化測(cè)試用例,然后可以簡(jiǎn)單快速地自

動(dòng)化測(cè)試用例。

?準(zhǔn)確

測(cè)試用例的執(zhí)行是一個(gè)死記硬背和枯燥的活動(dòng)。人類會(huì)犯錯(cuò)。然而,自動(dòng)化測(cè)

試套件每次都會(huì)運(yùn)行并返回正確的結(jié)果。

?早期錯(cuò)誤報(bào)告

自動(dòng)化單元測(cè)試用例給了你早期報(bào)告錯(cuò)誤和錯(cuò)誤的明顯優(yōu)勢(shì)。當(dāng)自動(dòng)化測(cè)試套

件由調(diào)度器運(yùn)行時(shí),一旦代碼由于錯(cuò)誤而凍結(jié),代碼中的所有邏輯錯(cuò)誤都會(huì)被

快速發(fā)現(xiàn)并報(bào)告,而不需要太多的人工干預(yù)。

?對(duì)單元測(cè)試的內(nèi)置支持

有許多編程語(yǔ)言通過(guò)專用于單元測(cè)試的庫(kù)為編寫單元測(cè)試提供內(nèi)置支持。例子

包括Python>Java和PHP。

使用文檔字符串

本章的重點(diǎn)是讓你開(kāi)始學(xué)習(xí)Python中的單元測(cè)試自動(dòng)化。讓我們從文檔字符

串的概念及其在Python中的實(shí)現(xiàn)開(kāi)始。在學(xué)習(xí)doctest的時(shí)候,Docstrings

將會(huì)對(duì)你非常有用。

一個(gè)文官字符用是在模塊的源代碼中指定的字符串文字。它用于記錄特定的代

碼段。代碼注釋也用于記錄源代碼。然而,文檔字符串和注釋之間有一個(gè)主要

的區(qū)別。解析源代碼時(shí),注釋不作為代碼的一部分包含在解析樹中,而文檔字

符串包含在解析的代碼樹中。

這樣做的主要優(yōu)點(diǎn)是文檔字符串在運(yùn)行時(shí)可用。使用特定于編程語(yǔ)言的功能,

可以檢索特定于模塊的文檔字符串。文檔字符串總是在模塊實(shí)例的整個(gè)運(yùn)行時(shí)

被保留。

Python中的文檔字符串示例

讓我們看看如何在Python中實(shí)現(xiàn)docstring的概念。Pythondocstring是

作為模塊、函數(shù)、類或方法定義中的第一條語(yǔ)句出現(xiàn)的字符串文字。docstring

成為該對(duì)象的doc特殊屬性。

讓我們看一個(gè)Pythondocstring的代碼示例。從這一章開(kāi)始,你將會(huì)做很多

編程工作。我建議您在您的計(jì)算機(jī)上創(chuàng)建一個(gè)目錄,并在其中創(chuàng)建特定章節(jié)的

子目錄。如前所述,我使用的是Linux操作系統(tǒng)。(我最喜歡的電腦,樹莓Pi

3型號(hào)b)我已經(jīng)創(chuàng)建了一個(gè)名為book的目錄和一個(gè)名為code的目錄。code目錄

有包含每章代碼的特定章節(jié)目錄。圖2^1以樹形圖的形式展示了目錄結(jié)構(gòu)的圖

圖2T

建議的圖書目錄結(jié)構(gòu)

在code目錄下創(chuàng)建章節(jié)子目錄,如圖221樹形圖所示。我們?cè)谶@一章使用目錄

chapter02,在下一章使用chapter03,依此類推。導(dǎo)航到|chapter02目錄并將下面

的代碼(參見(jiàn)清單2T)作為testjnoduleOLpy保存在該目錄中。

〃〃〃ThisistestmoduleOl.Thisisexampleofmultilinedocstring.〃〃〃class

TestClassOl:“"ThisisTestClassOl.〃〃〃deftest_case01(self):

〃〃Thisistest_case01().〃〃〃deftest_function01():〃〃〃Thisistest_func

tionOl()?〃〃〃Listing2-ltestmoduleOl.py

在清單2-1中,有一個(gè)測(cè)試文件叫做testjnoduleOl.py,包含TestClassOl和test

functionOl()oTestClassOl有一種方法叫做test_caseOl()o這里所有的代碼單

元都有一個(gè)docstringo第一個(gè)docstring是多行docstringo其余的都是單

行docstrings的例子。

讓我們使用清單2H_中的代碼和一個(gè)交互式Python會(huì)話來(lái)看看docstrings

是如何工作的。

導(dǎo)航到chapter02目錄,鍵入python3以解釋器模式調(diào)用Python3。

pi@raspberrypi:^/book/code/chapter02$pwd/home/pi/book/code/chapter02pi@ras

pberrypi:Vbook/code/chapter02$python3Python3.4.2(default,Oct192014,1

3:31:11)[GCC4.9.1]onlinuxType"help","copyright","credits〃or"license”

formoreinformation.?>

使用以下語(yǔ)句導(dǎo)入您剛剛創(chuàng)建的測(cè)試模塊:

?>importtestmoduleOl

您可以使用help。函數(shù)查看模塊及其成員的文檔字符串,如下所示。

>>>help(test_module01)

輸出如下所示:

Helponmoduletest_module01:NAMEtest_module01DESCRIPTIONThisis

testmoduleOl.Thisisexampleofmultilinedocstring.CLASSESbuilti

ns.objectTestClassOlclassTestClassOl(builtins.object)|ThisisT

estClassOl.|Methodsdefinedhere:I|test_caseOl(self)

Thisistest_case01().||___________________________________________________

IDatadescriptorsdefinedhere:|_diet|dictionaryfor

instancevariables(ifdefined)_weakreflistofweakref

erencestotheobject(ifdefined)FUNCTIONStest_function01()Th

isistest_function01().FILE/home/pi/book/code/chapter02/test_module0

i.py

您可以使用help。查看單個(gè)成員的docstringo運(yùn)行以下語(yǔ)句,親自查看輸出。

>>>help(test_module01.TestClassOl)?>help(test_module01.TestClassOl.test_ca

seOl)>>>help(test_module01.testfunctionOl)

如前所述,docstring成為該對(duì)象的doc特殊屬性。您還可以使用print()函數(shù)來(lái)

查看模塊及其成員的docstringo以下交互式Python會(huì)話演示了這一點(diǎn)。

?>importtest_module01?>print(test_module01._doc_)Thisistest_moduleO

1.Thisisexampleofmultilinedocstring.?>print(test_module01.TestClassO

1.doc_)ThisisTestClassOl.?>print(test_module01.TestClassOl.test_case01.

_doc_)Thisistest_case01().?>print(test_module01.test_function01._doc_)T

hisistest_function01().>>>

您可以在以下PEP頁(yè)面上找到關(guān)于Pythondocstring的詳細(xì)信息。

T2https:〃www.python,org/dcv/peps/pep-0256

T2https://www.python,org/dcv/peps/pep-0257

T2https:〃www.python,org/dev/peps/pep-0258

在下一節(jié)中,您將學(xué)習(xí)使用docstrings來(lái)編寫簡(jiǎn)單的測(cè)試用例,并使用docte

st來(lái)執(zhí)行它們。

doctest簡(jiǎn)介

doctest是Python中的輕量級(jí)單元測(cè)試框架,它使用文檔字符串來(lái)測(cè)試自動(dòng)化。

doctest與Python解釋器打包在一起,因此您不必單獨(dú)安裝任何東西來(lái)使用它。

它是Python標(biāo)準(zhǔn)庫(kù)的一部分,遵循Python的“包含電池”哲學(xué)。

Note

如果你感興趣,你可以在PEP206頁(yè)面上閱讀Python的電池內(nèi)含哲學(xué)(參見(jiàn)

https:〃www.python,org/dcv/peps/pcp-0206)。

清單222中的代碼是一個(gè)測(cè)試模塊的簡(jiǎn)單例子,它有兩個(gè)函數(shù),每個(gè)函數(shù)有兩

個(gè)測(cè)試。

〃〃〃Sampledoctesttestmodule...test_module02〃〃〃defmul(a,b):

〃>?mul(2,3)6>?mul(?a,2)'aa'〃〃〃return

a*bdefadd(a,b):〃〃〃?>add(2,3)5?>addfa,'b')

'ab'〃〃〃returna+bListing2-2test_module02.py

在清單2^2中,測(cè)試用例被稱為模塊的文檔字符串,代碼本身并沒(méi)有特別調(diào)用

doctesto當(dāng)程序作為Python3程序使用python3test命令執(zhí)行時(shí),module02.p

y不會(huì)在命令行產(chǎn)生任何輸出。為了查看doctest的運(yùn)行情況,您必須在命令提

示符下使用以下命令運(yùn)行它:

python3-indoctest-vtest_module02.py

輸出如下所示:

Trying:add(2,3)Expecting:5okTrying:add('a','b')Expecti

ng:‘a(chǎn)b'okTrying:mul(2,3)Expecting:6okTrying:mul

('a',2)Expecting:'aa'ok1\.itemshadnotests:test_module022

\.itemspassedalltests:2testsintest_module02.add2testsintest

_module02.mul4testsin3items.4passedand0failed.Testpassed.

我們來(lái)看看doctest是如何工作的。通過(guò)比較代碼一一特別是用于執(zhí)行和輸出的

命令一一您可以找出相當(dāng)多的東西。doctest通過(guò)解析文檔字符串來(lái)工作。每當(dāng)

doctest在一個(gè)模塊的doctest文檔中發(fā)現(xiàn)一個(gè)交互式Python提示,它就將其輸

出視為預(yù)期輸出。然后,它通過(guò)引用文檔字符串來(lái)運(yùn)行模塊及其成員。它將實(shí)

際輸出與文檔字符串中指定的輸出進(jìn)行比較。然后,它標(biāo)記測(cè)試通過(guò)或失敗。

你必須在執(zhí)行模塊時(shí)使用-mdoctest來(lái)讓解釋器知道你需要使用doctest模塊來(lái)

執(zhí)行代碼。

命令行參數(shù)-v代表廳長(zhǎng)模式。您必須使用它,因?yàn)闆](méi)有它,測(cè)試將不會(huì)產(chǎn)生任

何輸出,除非它失敗。不管測(cè)試是通過(guò)還是失敗,使用verbose都會(huì)生成一個(gè)

執(zhí)行日志。

測(cè)試失敗

在清單2z2中,所有的測(cè)試都順利通過(guò)。現(xiàn)在,讓我們看看測(cè)試是如何失敗的。

在清單?中,用*(星號(hào))替換代碼最后一行的+,并用相同的命令再次運(yùn)行測(cè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論