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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

TableofContents

Python單元測試白動化教程

Python單元測試自動化教程

—?、Python簡介

二、入門指南

三、單元測試

四、nose和nose2

五、pytest

六、Selenium測試

七、在Python中記錄日志

八、提示和技巧

Python單元測試自動化教程

來源:https:〃gitee.com/apachecn/apachecn-python-zh-pt4/blob/master/d

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

Python單元測試自動化教程

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

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

原文:PythonUnitTestAutomation

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

階段:機翻(1)

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

?在線閱讀

?在線閱讀(Gitee)

?ApacheCN學習資源

貢獻指南

本項目需要校對,歡迎大家提交PullRequesto

請您勇敢地去翻譯和改進翻譯。雖然我們追求卓越,但我們并不要求您做到十

全十美,因此請不要擔心因為翻譯上犯錯一一在大部分情況下,我們的服務器

已經(jīng)記錄所有的翻譯,因此您不必擔心會因為您的失誤遭到無法挽回的破壞。

(改編自維基百科)

聯(lián)系方式

負責人

?飛龍:562826179

其他

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

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

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

下載

Docker

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

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

PYPI

pipinstallapachecn-python-zh-pt4apachecn-python-zh-pt4<port>#訪問http:/

/localhost:{port}查看文檔

NPM

npminstall-gapachecn-python-zh-pt4apachecn-python-zh-pt4<port>#訪問htt

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

其它協(xié)議

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

贊助我們

熊支嘏

一、Python簡介

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

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

我希望你已經(jīng)瀏覽了介紹部分。如果你還沒有,那么我推薦你讀一讀,因為它

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

讓我們從學習Python的歷史和背景開始這次冒險之旅。

我個人覺得Python很神奇,已經(jīng)被它迷住了。Python是一種簡單而強大的編

程語言。當使用Python時,很容易關注給定問題的解決方案的實現(xiàn),因為程

序員不必擔心編程語言的語法。

Python的歷史

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

CentrumWiskunde&Informatica(國家數(shù)學和計算機科學研究所)開始實施這

一計劃。Python是ABC編程語言的繼承者,ABC編程語言本身就是受SETL

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

Python這個名字的靈感來自電視節(jié)目“巨蟒劇團的飛行馬戲團”,因為VanR

ossum是巨蟒劇團的忠實粉絲。

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

核心作用。他擁有Python的終身。慈?獨裁者的稱號。2018年,他卸任了那個

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

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

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

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

?漂亮總比難看好。

?顯性比隱性好。

?簡單比復雜好。

?復雜總比復雜好。

?平面比嵌套好。

?疏比密好。

?可讀性很重要。

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

?實用性勝過純粹性。

?錯誤永遠不會無聲無息地過去。

?除非明確沉默。

?面對曖昧,拒絕猜測的誘惑。

?應該有一種一一最好只有一種一一顯而易見的方法來做這件事。

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

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

?雖然從來沒有比現(xiàn)在更好。

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

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

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

Python的特性

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

歡迎。

簡單的

Python是一種簡單的極簡主義語言。閱讀一個寫得很好的Python程序,會讓

你覺得好像在讀英文文本。

簡單易學

由于其簡單和類似英語的語法,Python對于初學者來說非常容易學習。

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

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

第一門編程語言。

易于閱讀

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

與用其他編程語言編寫的代碼相比,Python代碼的類似英語的結構更容易閱讀。

與C和C++等其他高級語言相比,這使得它更容易理解和學習。

易于維護

由于Python代碼易于閱讀、理解和學習,任何維護代碼的人都可以在相當短

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

的大型遺留代碼庫的個人經(jīng)歷中證明這一點。

開放源碼

Python是一個開源項目。這意味著它的源代碼是免費的。您可以根據(jù)自己的需

要對它進行修改,并在應用中使用原始的和修改過的代碼。

高級語言

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

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

類似英語的語法寫代碼。

輕便的

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

需要任何修改,如果你足夠小心避免任何系統(tǒng)相關的特性。您可以在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是一種直譯語言。用C、C++和Java等高級編程語言編寫的程序首先

被編譯。這意味著它們首先被轉(zhuǎn)換成中間格式。當您運行程序時,這個中間格

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

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

接從源代碼運行程序。您不必擔心編譯和鏈接到適當?shù)膸?。這使得Python程

序真正具有可移植性,因為您可以將程序從一臺計算機復制到另一臺計算機,

只要在目標計算機上安裝了必要的庫,程序就可以正常運行。

面向?qū)ο?/p>

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

數(shù)據(jù)和相關功能的對象構建的。Python是一種非常簡單但功能強大的面向?qū)ο?/p>

編程語言。

可擴張的

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

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

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

豐富的圖書館

Python預裝了一個廣泛的標準庫。標準庫具有現(xiàn)代編程語言的所有基本特征。

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

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

理念的一部分。

除了標準庫,Python還有一個龐大且不斷增長的第三方庫。這些庫的列表可以

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

于測試自動化的庫,如unittest、nose、nose2>pytest和selenium。我還參與了

科學計算和計算機視覺庫的工作并撰寫了大量文章,比如numpy、scipy、matplo

tlib>pillow>scikit-image和OpenCVo

粗野的

Python通過其處理錯誤的能力來提供健壯性。遇到的錯誤的完整堆棧跟蹤是可

用的,這使得程序員的生活更容易忍受。運行時錯誤被稱為異常。允許處理這

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

快速原型

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

學習,因此許多軟件架構師越來越多地使用它作為工具,在很短的時間內(nèi)將他

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

內(nèi)存管理

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

手頭任務之外的。這給程序員造成了不必要的負擔。在Python中,Python解

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

強大的

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

科學計算、模擬和生物信息學等應用。全世界數(shù)百萬程序員使用Pythono許多

大型組織,如NASA、Google、SpaceX和Cisco,都在他們的應用和基礎設施

中使用Pythono

社區(qū)支持

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

全世界有一個由近百萬程序員組成的社區(qū)(可能更多,因為今天的高中生正在學

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

與Python相關的問題沒有一個是沒有答案的。

蟒蛇3

Python3發(fā)布于2008年。Python開發(fā)團隊決定去掉Python語言的一些冗

余特性,簡化它的一些特性,糾正一些設計缺陷,并添加一些急需的特性。

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

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

三方庫從2.x遷移到3.x.Python2.x代碼在許多情況下無法在Python3

上運行,因為2.x和3.x之間存在顯著差異。

Python2和Python3的區(qū)別

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

?print。功能

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

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

?整數(shù)除法

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

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

個浮點值。

?省略xrangeO

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

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

使用xrangeO會引發(fā)~*個nameError。

?引發(fā)異常

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

中,這是可選的。

?處理異常

在Python3中,在處理異常時,需要在參數(shù)前使用as關鍵字來處理參數(shù)。在

Python2中,不需要。

?新樣式類別

Python2支持舊的和新的樣式類,而Python3只支持新的樣式類。默認情況

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

?Python3的新特性

ThefollowingnewfeaturesofPython3havenotbeenbackportedtoPy

thon2:

1.默認情況下,字符串是Unicode的

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

3.異常鏈接

4.函數(shù)注釋

5.僅關鍵字參數(shù)的語法

6.擴展元組解包

7.非局部變量聲明

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

為什么使用Python3

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

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

說的:

對于任何新的開發(fā)都強烈推薦Python3。

新一代程序員將Python3作為他們的第一門編程語言。當他們熟悉Python

編程的概念和哲學時,他們會逐漸了解Python2,這樣他們也可以使用遺留代

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

的所有新項目都大量使用Python3。在撰寫本書的這個版本時,Python2幾

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

Python3。隨著時間的推移,Python2中的代碼越來越少,要么被放棄,要么

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

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

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

新項目都是從Python3開始的。展望未來,將遺留的Python2代碼庫轉(zhuǎn)換

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

我個人認為這些是使用Python3的很好的理由。

安裝Python3

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

在Linux上安裝

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

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

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

在Fedora和CentOS上安裝

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

Note

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

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

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

用python3—V或python3—version來檢查安裝在您的Linux計算機上的Python

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

的位置。

在macOSX上安裝

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

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

終端中運行brewinstallpython3命令。這將安裝Python3。它還將安裝其他工

具,如pip、setuptools和wheel。

一■旦安裝完成,進入終端并鍵入python3—V或python3―version來檢查安裝的P

ython3解釋器的版本。

在Windows上安裝

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

hon3沒有預裝在Windows計算機上。為了安裝它,你必須在https:〃www.py

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

圖1-1

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

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

可能會改變。)這將下載Python3的安裝文件。下載后打開安裝文件。點擊圖

1-2所示對話框中的運行按鈕。

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

打開文件-安全警告對話框

Note

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

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

如果您使用的是Windows7,根據(jù)您計算機的更新狀態(tài),您可能會遇到如圖上

3所示的消息框。

Setupfailed

Oneormoreissuescausedthesetuptofail.Pleasefixtheissuesand

thenretrysetup.Formoreinformationseethe她

Windows1ServicePack1andallapplicableupdatesarerequiredto

installPython3.5.2(32W

PleaseuM跳yowm疝他andthenrestarttheinstallation.

python

for

windows

圖1-3

Windows7的安裝失敗消息

通過安裝任何Windows更新來更新操作系統(tǒng),然后重新運行安裝文件。成功后

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

InstallPython3.5,2(32-bit)

SelectInstallNowIoinstallPythonwithdefaultsettings,orchoose

Customizetoenableordisablefeatures.

$InstallNow

C川娜\swidh腳pDaWoc腫岬m卿ho刪對劃

IncludesBE,pipanddocumentation

Cftatesshortcutsandfilta?ocita

4Customizeinstallation

Chooselocationandfeatures

ZInstalllauncherforallusers(recommended)

windows@AddPython15toPATHCancel

圖1-4

Python安裝窗口

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

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

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

運行Python程序和Python模式

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

單概念開始。Python有兩種基本模式一一普通模式和交互模式。讓我們詳細看

看這些模式。

對話方式

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

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

時,在評估當前輸出時,會考慮之前執(zhí)行的整個語句序列。你必須在Linux/ma

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

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

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

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

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

中運行命令一樣,如下所示:

?>printCHelloWorld!')HelloWorld!>>>

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

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

>>>exit()$

腳本模式

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

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

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

$python3test.pyHelloWorld!$

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

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

Note

對于所有的Linux和Mac計算機,Python3解釋器的命令是python3。對于

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

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

命令提示符(在我的RaspberryPi4上)來運行代碼示例。舉幾個例子,我會

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

Python的ide

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

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

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

e。讓我們來看看Python的幾個ide。

閑置的

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

的。很受Python初學者的歡迎。在安裝了Python3的Linux計算機上,只

需在命令提示符下鍵入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上運行

如果IDLE沒有默認安裝在您的Linux發(fā)行版上,那么您必須手動安裝它。對

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

sudoapt-getinstallidle

Eclipse的PyDev插件

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

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

個用于Eclipse的PythonIDE,它可以用于Python、Jython和IronPython

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

裝PyDevo

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

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

I八A04AOQW,

CVM"IN岫W。

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

,心5

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

,施,力1i(

,&Ml,獻M獷'W%.K欣咖他娜如,外1的

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

84r刪

8M如?“心,憫

2仙1做熱奧麗跚

日旅耐抑山溝

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

I_.豆咐*即加丹_________[i1

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

IM附Ma4a

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

Hl呻然?,?毗

IPNlLfUuin*013

?H??EW0|,

W候的tti郵uc&irLM

:?呼爾雄心出

UMlt.hltMM"m1MOM

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

制M:f.nitiHi?Md

1*陽*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時刈四邯八加加“加1附毗\3火

(KKRIK|iJmlotfUt?bymMmntvtibttlh

*

?

??

圖1-6

PyDev的Eclipse

蓋尼

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

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

eany.org了解更多詳情。

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

出汝*嫌惻Qod1*1岫M肺

口中通5部??儲周?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叫陽(則加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

夕世冊.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的另一個IDE,它包含了強大的功能,如調(diào)

試器、代碼檢查工具、版本控制和集成的單元測試運行器。它是一個跨平臺的

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

更多信息請訪問其主頁https:〃www.jetbrains,com/pycharm/。

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

人更喜歡把邏輯和代碼寫在紙上(沒錯!用一張紙!)然后使用帶有語法突出顯

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

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

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

Exercise1-1

?訪問并探索位于www.python,org的Python主頁。

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

成功。

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

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

版本的新特性。

?為了練習,用Python編寫簡單的程序。例如,您可以使用迭代和遞

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

完成這個練習,更好地理解Python3的背景。

結論

在本章中,你學習了Python的背景、歷史和特性。您還學習了Python2和

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

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

動化的概念開始,并查看一個簡單的Python測試自動化庫,名為doctest。你

也簡單看一下pydoc。

二、入門指南

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

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

在前一章中,您學習了如何在Linux、macOS和Windows計算機上設置Pytho

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

化的概念開始。然后,您將探索一種學習Python3中測試自動化框架的簡單

方法,稱為doctest。

軟件測試概念簡介

教科書上對軟件測試的定義是,它是執(zhí)行一個程序或應用來發(fā)現(xiàn)任何錯誤的過

程。通常,在軟件測試的過程中有多個涉眾。涉眾包括測試人員、管理團隊、

顧問、業(yè)務、客戶和最終用戶。對于大中型項目,軟件測試是為了確定軟件在

各種輸入和條件下是否如預期的那樣運行。

單元測試

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

*使用所有需要的依賴項進行獨立測試。單元測試大部分是由程序員完成的,他

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

項目中,單元測試是正式開發(fā)過程的一部分,有適當?shù)奈臋n和適當?shù)臅r間表/工

作分配。

測試自動化

測試自動化是測試場景和案例結果的自動執(zhí)行和報告。在大多數(shù)大型復雜的項

目中,測試過程的許多階段都是自動化的。有時候自動化測試的工作量是如此

之大,以至于有一個獨立的自動化項目,有一個獨立的團隊致力于此,包括一

個獨立的報告結構和獨立的管理。有幾個領域和階段的測試可以自動化。像代

碼庫和第三方API這樣的各種工具被用于單元測試。有時候,單元測試的代碼

也是以自動化的方式生成的。單元測試是自動化的主要候選。

自動化單元測試的好處

自動化單元測試有很多原因。讓我們逐一考慮。

?時間和努力

隨著代碼庫的增長,要進行單元測試的模塊數(shù)量也在增長。手動測試非常耗時。

為了減少手動測試的工作量,您可以自動化測試用例,然后可以簡單快速地自

動化測試用例。

?準確

測試用例的執(zhí)行是一個死記硬背和枯燥的活動。人類會犯錯。然而,自動化測

試套件每次都會運行并返回正確的結果。

?早期錯誤報告

自動化單元測試用例給了你早期報告錯誤和錯誤的明顯優(yōu)勢。當自動化測試套

件由調(diào)度器運行時,一旦代碼由于錯誤而凍結,代碼中的所有邏輯錯誤都會被

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

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

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

包括Python>Java和PHP。

使用文檔字符串

本章的重點是讓你開始學習Python中的單元測試自動化。讓我們從文檔字符

串的概念及其在Python中的實現(xiàn)開始。在學習doctest的時候,Docstrings

將會對你非常有用。

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

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

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

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

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

可以檢索特定于模塊的文檔字符串。文檔字符串總是在模塊實例的整個運行時

被保留。

Python中的文檔字符串示例

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

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

成為該對象的doc特殊屬性。

讓我們看一個Pythondocstring的代碼示例。從這一章開始,你將會做很多

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

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

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

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

圖2T

建議的圖書目錄結構

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

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

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

〃〃〃ThisistestmoduleOl.Thisisexampleofmultilinedocstring.〃〃〃class

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

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

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

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

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

元都有一個docstringo第一個docstring是多行docstringo其余的都是單

行docstrings的例子。

讓我們使用清單2H_中的代碼和一個交互式Python會話來看看docstrings

是如何工作的。

導航到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.?>

使用以下語句導入您剛剛創(chuàng)建的測試模塊:

?>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。查看單個成員的docstringo運行以下語句,親自查看輸出。

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

seOl)>>>help(test_module01.testfunctionOl)

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

查看模塊及其成員的docstringo以下交互式Python會話演示了這一點。

?>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頁面上找到關于Pythondocstring的詳細信息。

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é)中,您將學習使用docstrings來編寫簡單的測試用例,并使用docte

st來執(zhí)行它們。

doctest簡介

doctest是Python中的輕量級單元測試框架,它使用文檔字符串來測試自動化。

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

它是Python標準庫的一部分,遵循Python的“包含電池”哲學。

Note

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

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

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

個測試。

〃〃〃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中,測試用例被稱為模塊的文檔字符串,代碼本身并沒有特別調(diào)用

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

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

示符下使用以下命令運行它:

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.

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

命令一一您可以找出相當多的東西。doctest通過解析文檔字符串來工作。每當

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

出視為預期輸出。然后,它通過引用文檔字符串來運行模塊及其成員。它將實

際輸出與文檔字符串中指定的輸出進行比較。然后,它標記測試通過或失敗。

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

執(zhí)行代碼。

命令行參數(shù)-v代表廳長模式。您必須使用它,因為沒有它,測試將不會產(chǎn)生任

何輸出,除非它失敗。不管測試是通過還是失敗,使用verbose都會生成一個

執(zhí)行日志。

測試失敗

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

在清單?中,用*(星號)替換代碼最后一行的+,并用相同的命令再次運行測

溫馨提示

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

評論

0/150

提交評論