(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页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

协议:CCBY-NC-SA4.0

阶段:机翻(1)

利欲驱人万火牛,江湖浪迹一沙鸥。一一陆游《秋思》

•在线阅读

•在线阅读(Gitee)

•ApacheCN学习资源

贡献指南

本项目需要校对,欢迎大家提交PullRequesto

请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十

全十美,因此请不要担心因为翻译上犯错一一在大部分情况下,我们的服务器

已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。

(改编自维基百科)

联系方式

负责人

•飞龙:562826179

其他

•在我们的apachecn/apachecn-python-zh-pt4github上提issue.

•发邮件到Emai1:apachecn@163.com.

•在我们的组织学习交流群中联系群主/管理员即可.

下载

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}查看文档

其它协议

霞鹫文楷采用SIL开放字体协议1.1。

赞助我们

熊支嘏

一、Python简介

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

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

我希望你已经浏览了介绍部分。如果你还没有,那么我推荐你读一读,因为它

会帮助你理解这本书的内容和哲学。

让我们从学习Python的历史和背景开始这次冒险之旅。

我个人觉得Python很神奇,已经被它迷住了。Python是一种简单而强大的编

程语言。当使用Python时,很容易关注给定问题的解决方案的实现,因为程

序员不必担心编程语言的语法。

Python的历史

Python诞生于20世纪80年代末。吉多•范•罗苏姆于1989年底在荷兰的

CentrumWiskunde&Informatica(国家数学和计算机科学研究所)开始实施这

一计划。Python是ABC编程语言的继承者,ABC编程语言本身就是受SETL

的启发。1991年2月,VanRossum向alt.sources新闻组发布了Python代码。

Python这个名字的灵感来自电视节目“巨蟒剧团的飞行马戏团”,因为VanR

ossum是巨蟒剧团的忠实粉丝。

VanRossum是Python的主要作者。他在指导Python的发展和演变中发挥了

核心作用。他拥有Python的终身。慈•独裁者的称号。2018年,他卸任了那个

角色。截至撰写本版时,他在微软工作。

Python的核心哲学,被称为Python的*禅,*在PEP-20中有解释,可以在h

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

它是20个软件原则的集合,如下所示:

•漂亮总比难看好。

•显性比隐性好。

•简单比复杂好。

•复杂总比复杂好。

•平面比嵌套好。

•疏比密好。

•可读性很重要。

•特例不足以特殊到打破规则。

・实用性胜过纯粹性。

•错误永远不会无声无息地过去。

・除非明确沉默。

•面对暧昧,拒绝猜测的诱惑。

・应该有一种一一最好只有一种一一显而易见的方法来做这件事。

・尽管这种方式一开始可能并不明显,除非你是荷兰人。

•现在总比没有好。

•虽然从来没有比现在更好。

・如果实现很难解释,这是一个坏主意。

•如果实现很容易解释,这可能是一个好主意。

・名称空间是一个非常棒的想法一一让我们多做一些吧!

Python的特性

下面几节讨论Python的一些特性,这些特性在编程社区中已经变得流行和受

欢迎。

简单的

Python是一种简单的极简主义语言。阅读一个写得很好的Python程序,会让

你觉得好像在读英文文本。

简单易学

由于其简单和类似英语的语法,Python对于初学者来说非常容易学习。

这就是为什么现在它作为第一编程语言被教授给学习编程入门和编程101课程

的高中生和大学生的主要原因。新一代的程序员正在学习Python作为他们的

第一门编程语言。

易于阅读

与其他高级编程语言不同,Python没有提供太多混淆代码和使其不可读的规定。

与用其他编程语言编写的代码相比,Python代码的类似英语的结构更容易阅读。

与C和C++等其他高级语言相比,这使得它更容易理解和学习。

易于维护

由于Python代码易于阅读、理解和学习,任何维护代码的人都可以在相当短

的时间内熟悉其代码库。我可以从维护和增强由bash和Python2组合编写

的大型遗留代码库的个人经历中证明这一点。

开放源码

Python是一个开源项目。这意味着它的源代码是免费的。您可以根据自己的需

要对它进行修改,并在应用中使用原始的和修改过的代码。

高级语言

在编写Python程序时,您不必管理低级别的细节,如内存管理、CPU计时和

调度过程。所有这些任务都由Python解释器管理。你可以直接用易于理解的、

类似英语的语法写代码。

轻便的

Python已经移植到很多平台。所有Python程序都可以在这些平台上运行,不

需要任何修改,如果你足够小心避免任何系统相关的特性。您可以在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等高级编程语言编写的程序首先

被编译。这意味着它们首先被转换成中间格式。当您运行程序时,这个中间格

式由链接器/加载器从辅助存储器(即硬盘)加载到内存(ram)中。所以,C、C++

和Java有独立的编译器和连接器/加载器。Python就不是这样了。Python直

接从源代码运行程序。您不必担心编译和链接到适当的库。这使得Python程

序真正具有可移植性,因为您可以将程序从一台计算机复制到另一台计算机,

只要在目标计算机上安装了必要的库,程序就可以正常运行。

面向对象

Python支持面向对象的编程范例。在面向对象的编程语言中,程序是围绕结合

数据和相关功能的对象构建的。Python是一种非常简单但功能强大的面向对象

编程语言。

可扩张的

Python的一个特性就是可以从Python程序中调用C和C++例程。如果希望

应用的核心功能运行得更快,可以用C/C++编写那部分代码,在Python程序

中调用(C/C++程序一般比Python运行得快)。

丰富的图书馆

Python预装了一个广泛的标准库。标准库具有现代编程语言的所有基本特征。

它提供了数据库、单元测试(我们将在本书中探讨)、正则表达式、多线程、网

络编程、计算机图形、图像处理、GUI和其他工具。这是Python的内置电池

理念的一部分。

除了标准库,Python还有一个庞大且不断增长的第三方库。这些库的列表可以

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

于测试自动化的库,如unittest、nose、nose2>pytest和selenium。我还参与了

科学计算和计算机视觉库的工作并撰写了大量文章,比如numpy、scipy、matplo

tlib>pillow>scikit-image和OpenCVo

粗野的

Python通过其处理错误的能力来提供健壮性。遇到的错误的完整堆栈跟踪是可

用的,这使得程序员的生活更容易忍受。运行时错误被称为异常。允许处理这

些错误的特性被称为舁常处理加制。

快速原型

Python忤为快速成型工具。正如您所读到的,Python拥有丰富的库并且易于

学习,因此许多软件架构师越来越多地使用它作为工具,在很短的时间内将他

们的想法快速原型化为工作模型。

内存管理

在汇编语言和像c和C++这样的编程语言中,内存管理是程序员的责任。这是

手头任务之外的。这给程序员造成了不必要的负担。在Python中,Python解

释器处理内存管理。这有助于程序员避开内存问题,专注于手头的任务。

强大的

Python拥有现代编程语言的一切。它用于计算机视觉、超级计算、药物发现、

科学计算、模拟和生物信息学等应用。全世界数百万程序员使用Pythono许多

大型组织,如NASA、Google、SpaceX和Cisco,都在他们的应用和基础设施

中使用Pythono

社区支持

我发现这是Python最吸引人的特性。正如您所读到的,Python是开源的,在

全世界有一个由近百万程序员组成的社区(可能更多,因为今天的高中生正在学

习Python)»这意味着互联网上有很多论坛支持遇到障碍的程序员。我提出的

与Python相关的问题没有一个是没有答案的。

蟒蛇3

Python3发布于2008年。Python开发团队决定去掉Python语言的一些冗

余特性,简化它的一些特性,纠正一些设计缺陷,并添加一些急需的特性。

人们决定,主要修订号是有保证的,并且最终发布的版本不会向后兼容。Pytho

n2.x和3.x应该并行共存,以便程序员社区有足够的时间将他们的代码和第

三方库从2.x迁移到3.x.Python2.x代码在许多情况下无法在Python3

上运行,因为2.x和3.x之间存在显著差异。

Python2和Python3的区别

以下是Python2和Python3之间最显著的区别。让我们简单地看一下它们:

•print。功能

这可能是Python2和Python3之间最显著的区别。Python2的print语句

在Python3中被替换为print。函数。

•整数除法

在Python3中,为了数学正确性,整数除法的性质已经改变。在Python2

中,两个整数操作数相除的结果是一个整数。但是,在Python3中,它是一

个浮点值。

•省略xrangeO

在Python2中,为了创建可迭代对象,使用了xrangeO函数。在Python3中,

range。的实现很像xrangeO。因此,不再需要单独的xrange()。在Python3中

使用xrangeO会引发~*个nameError。

•引发异常

在Python3中,必须将异常参数(如果有的话)括在括号中,而在Python2

中,这是可选的。

•处理异常

在Python3中,在处理异常时,需要在参数前使用as关键字来处理参数。在

Python2中,不需要。

•新样式类别

Python2支持旧的和新的样式类,而Python3只支持新的样式类。默认情况

下,Python3中创建的所有类都使用新的样式类。

•Python3的新特性

ThefollowingnewfeaturesofPython3havenotbeenbackportedtoPy

thon2:

1.默认情况下,字符串是Unicode的

2.清除Unicode/字节分隔

3.异常链接

4.函数注释

5.仅关键字参数的语法

6.扩展元组解包

7.非局部变量声明

从这个列表中,你会经常在本书的代码示例中使用到print。、新型类和异常。

为什么使用Python3

从前面的列表中,您将会在本书的代码示例中频繁使用新型类和异常。

Python的wiki页面(https://wiki.python.org/moin/Python20rpython3)是这样

说的:

对于任何新的开发都强烈推荐Python3。

新一代程序员将Python3作为他们的第一门编程语言。当他们熟悉Python

编程的概念和哲学时,他们会逐渐了解Python2,这样他们也可以使用遗留代

码库。许多组织已经开始将代码库从Python2迁移到Python3。Python中

的所有新项目都大量使用Python3。在撰写本书的这个版本时,Python2几

乎已经寿终正寝了。大多数组织正在将他们的遗留代码库从Python2迁移到

Python3。随着时间的推移,Python2中的代码越来越少,要么被放弃,要么

被转换到Python3o将Python2代码转换成Python3是一个漫长而繁琐的

过程。许多组织都是根据需要来做的。大多数组织遵循的一般经验法则是,如

果代码有效,他们就不碰它。然而,正如我已经说过的,所有涉及Python的

新项目都是从Python3开始的。展望未来,将遗留的Python2代码库转换

为Python3将为专业人员带来技术上的挑战和经济上的巨大机遇。

我个人认为这些是使用Python3的很好的理由。

安装Python3

本节讨论如何在各种常用的计算机操作系统上安装Python3o

在Linux上安装

Linux有许多流行的发行版。Python3预装在许多流行的发行版中。

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

Python3解释器预装在Debian、Ubuntu及其衍生产品的最新版本中。

在Fedora和CentOS上安装

Python3解释器预装在Fedora和CentOS的最新版本中。

Note

在大多数最新的Linux发行版上,默认情况下会安装两个版本的Python(Pyt

hon2和Python3)□Python2的解释器是一个名为python的二进制可执行文

件,Python3的解释器是另一个名为python3的二进制可执行文件。您可以使

用python3—V或python3—version来检查安装在您的Linux计算机上的Python

3解释器的版本。同样,你可以使用whichpython3命令来确定解释器在磁盘上

的位置。

在macOSX上安装

在macOSX上,Python2解释器是默认安装的,可以使用python命令从终端

调用。如果你想用Python3,你必须安装它。确保计算机连接到互联网,并在

终端中运行brewinstallpython3命令。这将安装Python3。它还将安装其他工

具,如pip、setuptools和wheel。

一■旦安装完成,进入终端并键入python3—V或python3―version来检查安装的P

ython3解释器的版本。

在Windows上安装

在Windows操作系统中,Python3的安装需要更多的努力。Python2或Pyt

hon3没有预装在Windows计算机上。为了安装它,你必须在https:〃www.py

thon.org/downloads访问Python网站的下载部分,如图17所不。

图1-1

网站上的Python下载部分

选择Python3.5.2o(如果本书出版后有新的Python稳定版本,数字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

根据设置,您可能需要管理员权限才能在Windows计算机上安装Python3(或

任何其他程序)。如果您处于组织环境中,请向您的系统管理团队咨询此信息。

如果您使用的是Windows7,根据您计算机的更新状态,您可能会遇到如图上

3所示的消息框。

Setupfailed

Oneormoreissuescausedthesetuptofail.Pleasefixtheissuesand

thenretrysetup.Formoreinformationseethe她

Windows1ServicePack1andallapplicableupdatesarerequiredto

installPython3.5.2(32W

PleaseuM跳yowm疝他andthenrestarttheinstallation.

python

for

windows

图1-3

Windows7的安装失败消息

通过安装任何Windows更新来更新操作系统,然后重新运行安装文件。成功后

会出现图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系统

变量中,并且您将能够在安装后从Windows的命令提示符(cmd)访问Python。

单击“立即安装”按钮,继续安装向导。安装完成后,将显示一条成功消息。

运行Python程序和Python模式

现在,您已经为Python编程设置了环境。现在,您可以从Python的一个简

单概念开始。Python有两种基本模式一一普通模式和交互模式。让我们详细看

看这些模式。

对话方式

Python的交互模式是一个命令行shell,为每个执行的语句提供即时输出。它

还将以前执行的语句的输出存储在活动内存中。当Python解释器执行新语句

时,在评估当前输出时,会考虑之前执行的整个语句序列。你必须在Linux/ma

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

调用Python3解释器进入交互模式,如下所示:

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

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

您可以在这种交互模式下直接执行Python语句,就像在操作系统外壳/控制台

中运行命令一样,如下所示:

»>printCHelloWorld!')HelloWorld!>>>

你不会在书中使用互动模式。然而,这是检查小代码片段(5到10行)最快的

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

>>>exit()$

脚本模式

脚本模式是Python解释器执行Python脚本文件(.py)的模式。

创建一个名为test,py的文件,并将print('HelloWorld!')语句添加到该文件中。

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

$python3test.pyHelloWorld!$

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

您调用python3解释器的同一个目录中,您必须提供Python文件的绝对路径。

Note

对于所有的Linux和Mac计算机,Python3解释器的命令是python3。对于

Windows,只是python,假设Windows电脑上只安装了Python3,并且在安装

过程中或者安装后手动将其位置添加到PATH变量中。在本书中,我使用Linux

命令提示符(在我的RaspberryPi4上)来运行代码示例。举几个例子,我会

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

Python的ide

集成开发环境(IDE)是一个软件套件,拥有编写和测试程序的所有基本工具。典

型的IDE有一个编译器、一个调试器、一个代码编辑器和一个构建自动化工具。

大多数编程语言都有各种各样的ide让程序员过得更好。Python也有许多id

e。让我们来看看Python的几个ide。

闲置的

IDLE代表集成开发环境。它与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网弟硼<

(0111110^:0w

—WbytesUWOI(

图1-5

IDLE3在树莓Pi上运行

如果IDLE没有默认安装在您的Linux发行版上,那么您必须手动安装它。对

于Debian及其衍生产品,安装命令如下:

sudoapt-getinstallidle

Eclipse的PyDev插件

如果你是一个经验丰富的Java程序员,你可能已经在Eclipse上工作过。Ec

lipse是一个非常流行的JavaIDE,它也可以用于其他编程语言。PyDev是一

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

开发(见图1-6)。您可以从位于www.pydev.org的Eclipsemarketplace安

装PyDevo

,珈册出”.碑蝴即<婢汗,粮幄"、'

他伊网।中叫“晒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能创则:・

I_.豆咐*即加丹_________[i1

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

IM附Ma4a

用iiK.mtmi■ut(同砌优地"领叩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网:口饰rg\MM\WC\呻恨期岫r

ixiinin|tMit.iAiuiUM

|KtmIH|tClllMit

阿门网:IMUUU«•lt«“比明umiiH•虱聊%umu

[SGIKIFX|iCiltfi4irIMUUUiHu憎*IMbytMuHr

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

win:ni:网h:tviu"NiMtic。川代丽・匕\曲曲加刖即\啪叫61时刈四邯八加加“加1附毗\3火

(KKRIK|iJmlotfUt•bymMmntvtibttlh

*

»

・・

图1-6

PyDev的Eclipse

盖尼

Geany(见图H7)是一个文本编辑器,它使用GTK+工具包,具有集成开发环境

的基本特性。它支持许多文件类型,并有一些不错的功能。查看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网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网jjll/

夕冰《加幽网聊1

*|24娜/•I

力帆b蹴网31tlilteditor.h

’(帆瞅川网»EditorTehtedfunctionslorfrefGeinyEditor.

»GtinyusestheScintilbeditinjvidget.indthisfile»xstlybuiltaround

夕(帆M他网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,它包含了强大的功能,如调

试器、代码检查工具、版本控制和集成的单元测试运行器。它是一个跨平台的

IDE,可用于Windows.macOS和Linux发行版。它的社区版是免费下载的。

更多信息请访问其主页https:〃www.jetbrains,com/pycharm/。

由于所涉及的库的性质,本书中的代码示例更适合在命令提示符下执行。我个

人更喜欢把逻辑和代码写在纸上(没错!用一张纸!)然后使用带有语法突出显

示的纯文本编辑器。比如我推荐Windows上的Notepad++或者Linux上的na

no、Leafpad、gedit。您可以使用IDLE3或Geany来编写和编译代码。

然而,大多数代码示例都应该从命令行执行。

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编写简单的程序。例如,您可以使用迭代和递

归技术为斐波那契数列和阶乘计算编写程序。

完成这个练习,更好地理解Python3的背景。

结论

在本章中,你学习了Python的背景、历史和特性。您还学习了Python2和

Python3之间的重要区别。您学习了如何在脚本和交互模式下安装和使用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环境。您还了解了一些流行的Pythonide。在这一章中,你将从测试自动

化的概念开始。然后,您将探索一种学习Python3中测试自动化框架的简单

方法,称为doctest。

软件测试概念简介

教科书上对软件测试的定义是,它是执行一个程序或应用来发现任何错误的过

程。通常,在软件测试的过程中有多个涉众。涉众包括测试人员、管理团队、

顾问、业务、客户和最终用户。对于大中型项目,软件测试是为了确定软件在

各种输入和条件下是否如预期的那样运行。

单元测试

单元测试是一种软件测试方法,在这种方法中,程序的单个组件,称为*单元,

*使用所有需要的依赖项进行独立测试。单元测试大部分是由程序员完成的,他

们为单元编写程序。在较小的项目中,这是非正式的。在大多数非常大规模的

项目中,单元测试是正式开发过程的一部分,有适当的文档和适当的时间表/工

作分配。

测试自动化

测试自动化是测试场景和案例结果的自动执行和报告。在大多数大型复杂的项

目中,测试过程的许多阶段都是自动化的。有时候自动化测试的工作量是如此

之大,以至于有一个独立的自动化项目,有一个独立的团队致力于此,包括一

个独立的报告结构和独立的管理。有几个领域和阶段的测试可以自动化。像代

码库和第三方API这样的各种工具被用于单元测试。有时候,单元测试的代码

也是以自动化的方式生成的。单元测试是自动化的主要候选。

自动化单元测试的好处

自动化单元测试有很多原因。让我们逐一考虑。

•时间和努力

随着代码库的增长,要进行单元测试的模块数量也在增长。手动测试非常耗时。

为了减少手动测试的工作量,您可以自动化测试用例,然后可以简单快速地自

动化测试用例。

•准确

测试用例的执行是一个死记硬背和枯燥的活动。人类会犯错。然而,自动化测

试套件每次都会运行并返回正确的结果。

•早期错误报告

自动化单元测试用例给了你早期报告错误和错误的明显优势。当自动化测试套

件由调度器运行时,一旦代码由于错误而冻结,代码中的所有逻辑错误都会被

快速发现并报告,而不需要太多的人工干预。

•对单元测试的内置支持

有许多编程语言通过专用于单元测试的库为编写单元测试提供内置支持。例子

包括Python>Java和PHP。

使用文档字符串

本章的重点是让你开始学习Python中的单元测试自动化。让我们从文档字符

串的概念及其在Python中的实现开始。在学习doctest的时候,Docstrings

将会对你非常有用。

一个文官字符用是在模块的源代码中指定的字符串文字。它用于记录特定的代

码段。代码注释也用于记录源代码。然而,文档字符串和注释之间有一个主要

的区别。解析源代码时,注释不作为代码的一部分包含在解析树中,而文档字

符串包含在解析的代码树中。

这样做的主要优点是文档字符串在运行时可用。使用特定于编程语言的功能,

可以检索特定于模块的文档字符串。文档字符串总是在模块实例的整个运行时

被保留。

Python中的文档字符串示例

让我们看看如何在Python中实现docstring的概念。Pythondocstring是

作为模块、函数、类或方法定义中的第一条语句出现的字符串文字。docstring

成为该对象的doc特殊属性。

让我们看一个Pythondocstring的代码示例。从这一章开始,你将会做很多

编程工作。我建议您在您的计算机上创建一个目录,并在其中创建特定章节的

子目录。如前所述,我使用的是Linux操作系统。(我最喜欢的电脑,树莓Pi

3型号b)我已经创建了一个名为book的目录和一个名为code的目录。code目录

有包含每章代码的特定章节目录。图2^1以树形图的形式展示了目录结构的图

图2T

建议的图书目录结构

在code目录下创建章节子目录,如图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以解释器模式调用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.»>

使用以下语句导入您刚刚创建的测试模块:

»>importtestmoduleOl

您可以使用help。函数查看模块及其成员的文档字符串,如下所示。

>>>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()函数来

查看模块及其成员的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

在下一节中,您将学习使用docstrings来编写简单的测试用例,并使用docte

st来执行它们。

doctest简介

doctest是Python中的轻量级单元测试框架,它使用文档字符串来测试自动化。

doctest与Python解释器打包在一起,因此您不必单独安装任何东西来使用它。

它是Python标准库的一部分,遵循Python的“包含电池”哲学。

Note

如果你感兴趣,你可以在PEP206页面上阅读Python的电池内含哲学(参见

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

清单222中的代码是一个测试模块的简单例子,它有两个函数,每个函数有两

个测试。

〃〃〃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中,测试用例被称为模块的文档字符串,代码本身并没有特别调用

doctesto当程序作为Python3程序使用python3test命令执行时,module02.p

y不会在命令行产生任何输出。为了查看doctest的运行情况,您必须在命令提

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

python3-indoctest-vtest_module02.py

输出如下所示:

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

ng:‘ab'okTrying:mul(2,3)Expecting:6okTrying:mul

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

\.itemspassedalltests:2testsintest_module02.add2testsintest

_module02.mul4testsin3items.4passedand0failed.Testpassed.

我们来看看doctest是如何工作的。通过比较代码一一特别是用于执行和输出的

命令一一您可以找出相当多的东西。doctest通过解析文档字符串来工作。每当

doctest在一个模块的doctest文档中发现一个交互式Python提示,它就将其输

出视为预期输出。然后,它通过引用文档字符串来运行模块及其成员。它将实

际输出与文档字符串中指定的输出进行比较。然后,它标记测试通过或失败。

你必须在执行模块时使用-mdoctest来让解释器知道你需要使用doctest模块来

执行代码。

命令行参数-v代表厅长模式。您必须使用它,因为没有它,测试将不会产生任

何输出,除非它失败。不管测试是通过还是失败,使用verbose都会生成一个

执行日志。

测试失败

在清单2z2中,所有的测试都顺利通过。现在,让我们看看测试是如何失败的。

在清单〜中,用*(星号)替换代码最后一行的+,并用相同的命令再次运行测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论