python安装方法_软件测试|| 今天咱们就来揭秘一下Python的神秘面纱!

           不点蓝字,我们哪来故事?

07e047c51b979a55b783a029d60e73b1.png

前言

python是如何给自动化测试技术保驾护航的?

1、Python的开发环境

没有Python开发环境,就开发不了Python代码,要想开发编写Python代码,第一步就是安装Python开发环境,主要安装步骤如下。

(1)前往Python官网下载Python,本篇选择的版本是3.7.1,如下图所示。

f0a033078254c05a948b046e29b27af2.png

选择Python版本

(2)选择Python 3.7.1,进入下载页面后选择“Windows x86-64 executableinstaller”进行下载,如下图所示。

cf42b361287237f514854f564c130b0f.png

下载安装包

(3)在启动安装程序前,请注意勾选“Add Python 3.7 to PATH”选项,然后再单击“Install Now”(现在安装)选项,可避免初学者在设置环境变量时出现问题,如下图所示。

862cc9b27100733822eeb3f2a0adad24.png

安装

(4)最后进入安装成功的界面,如下图所示。

ff131cbf1b14c7dd275f2b404ab6d5e1.png

安装成功

(5)通过Dos命令检查Python是否安装正常,直接在命令提示符后面输入“python”,然后按“Enter”键,查询结果如下图所示。

c0a67722cac18beda2ad2d53950d350e.png

检查安装

(6)通过Dos命令检查Python自带的辅助工具pip是否已存在(pip工具是用来安装Selenium Webdriver模块的)。

直接在命令提示符后输入“pip --version”,并按“Enter”键(请大家注意不是在“>>>”的提示符后输入,可以在“>>>”后输入“quit()”退出Python编程模式),查询的结果具体如下图所示。

输入“pip --version”命令后,如果查询出了下图所示的内容,则说明pip已存在。

bae014756590a4f8072aac4e120d7de4.png

检查pip

2、Python客户端

当Python的开发环境安装成功后,就意味着可以开发Python代码了,但具体要在哪个地方开发呢?

其实在安装好Python的开发环境后,Python自身就带有一个开发工具——IDLE,可以通过IDLE工具来开发Python代码,此开发工具可在开始程序里面找到,如下图所示。

8e1be8534e6a72aa361611fbd6120032.png

IDLE位置

用于Python客户端的开发工具也有很多,对初学者来说,本篇介绍一款功能强大、界面友好的代码编辑器——Sublime Text编辑器。

接下来,一起来安装并使用它,具体步骤如下。

(1)前往Sublime Text官网下载Sublime Text代码编辑器,下载时注意操作系统的位数,本篇下载的版本是Build 3176,如下图所示。

94a0a49f866fe32bc20af419d9b0f617.png

SublimeText下载页面

对于64位的Windows操作系统,可以直接单击图中“Windows 64 bit”链接下载安装程序,并进行安装。

也可以通过单击它后面的“portable version”链接下载一个可移动的便携版本。本篇以单击“portable version”链接来示例其下载和安装过程。

(2)单击“portable version”下载完成之后将其解压,如下图所示。

359fdaceddbad8f48f2c9a351d460ac4.png

下载并解压安装包

(3)打开解压之后的文件夹,如下图所示。

0771df462388168ec6ceb1bbf01b362c.png

查看解压后的文件

(4)直接双击上图中“sublime_text”这个应用程序,就能打开代码编辑器的主界面,如下图所示。

3d62b33dacc570b72d959d97792c8316.png

启动Sublime Text

(5)对初学者而言,在使用Sublime Text代码编辑器时,需要注意以下几点。

● Sublime Text提供了汉化插件,可根据实际需要进行安装。

● Sublime Text代码编辑器是收费软件,但可以无限期使用,如果使用中弹出了购买提示,只需取消此提示便可。

● 初学者通过Sublime Text代码编辑器编写代码时,请在全英文模式下进行。

(6)使用Sublime Text代码编辑器编辑Python代码,如下图所示。

a331806a8cba7c59d77f1ed35600323f.png

编辑代码

(7)编辑完成后需要将代码保存为“.py”格式的文件,可通过“Ctrl+S”快捷键进行保存,如下图所示。

1b5ea493310113049ec859fcc9230946.png

保存文件

(8)保存完成后,还可以对代码进行相应的注释,如下图所示。

e85a5ebb1e6362628394c5dac11984f9.png

添加注释

注释的作用主要是说明该行代码的功能,如果需要对一行代码进行注释,只需要使用“#”号加若干空格再加注释的内容便可,注释不会影响代码的执行,建议初学者养成写注释的好习惯。

(9)注释完成后,可直接通过“Ctrl+B”快捷键来运行此文件的代码,当代码运行完成后,Sublime Text代码编辑器的下方将给出程序运行所耗费的时间,下图所示。

309ee30dce19d8bc7ffa50d9575526ed.png

运行程序

(10)当运行代码遇到错误时,Sublime Text代码编辑器的下方也会给相应的错误提示,如下图所示。

4662f096353ed2851b356cc2e23edbbe.png

运行错误提示

此时从图中可以看到报错,错误信息“File"C:\Users\THINK\Downloads\Sublime Text Build 3176 x64\hello.py", line 2,in ”给出了代码出错的位置,“NameError: name'printt' is notdefined”给出了错误的原因,这是一个语法错误,原因是多加了一个t,去掉一个t,保存代码后,再次按下“Ctrl+B”快捷键运行此文件的代码,便可以正常运行此代码了。

本节说明如下。

初学者运行代码的时候会出现很多莫名其妙的错误,通过错误提示可以定位到错误代码的行数和具体错误的原因及类型,这可以帮我们很快定位和解决问题。

2、类和对象

Python是基于面向对象的编程语言,那什么是面向对象的思想呢?

这要从面向对象的两大概念说起:一个是类,另一个是对象。

何为类、何为对象呢?

类是具有相同属性和方法的一类事物的抽象描述,而对象就是这一类抽象事物的具体实例。

在程序设计当中,类和对象是什么关系呢?如何利用类和对象解释面向对象的思想?

接下来,本节将通过实例来简述这些问题。

一 新建类

现实生活中我们经常将年轻有型的小伙叫帅哥,那么帅哥代表的就是年轻有型的一类人,而不是指具体的某个人。

既然称得上是帅哥,那么称为帅哥的这一类人肯定有一些共同的行为,具体如下所示。

称为帅哥的这一类人的共同行为如下。

● 唱歌能力

● 跳舞能力

如果要用Python代码来描述帅哥这一类人所拥有的共同行为,应该如何描述呢?具体代码如下。

class Shuaige:  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")

【代码分析】

● 第01行代码,class用来定义一个类名,这里定义了一个叫Shuaige的类名,后面跟冒号,那么Shuaige就代表了帅哥的这一类人。

● 第02行代码和第03行代码,def关键字用来定义帅哥这一类人的共同行为,这里把帅哥的第一个共同行为命名为chang_ge,行为名后面跟一对括号。

如chang_ge(),这种以行为名加括号的方式就构成了一个具体的行为,行为名的括号里面有一个参数self,这个参数暂时不用理它。

chang_ge()这个行为后面还跟了一行代码:print("我会唱歌"),这行代码就是行为的具体实现,也就是chang_ge()这个行为要实现的就是打印出“我会唱歌”这几个字。

● 第04行代码和第05行代码,使用关键字def继续定义帅哥这一类人的另一个行为,也就是继续定义另一个方法,方法的名字叫tiao_wu,而tiao_wu()这个方法要实现的就是打印出“我会跳舞”这几个字。

【注意事项】

● 在Python语言里,把帅哥的共同行为都称为方法,也就是说这里定义了一个名为chang_ge()的方法,注意方法名后面有一个冒号。

● 从以上的代码分析可以看到,Shuaige这个类(也就是帅哥的这一类人)中两个方法(也就是帅哥这一类人所共有的两个行为特征)都被包含在Shuaige这个类里面了,也就是说Shuaige这个类里面提供了两种方法,而且这两种方法要实现的功能都已经在Shuaige这个类的内部准备好了。

二 新建对象

以帅哥这一类人为例,对象指的就是帅哥这一类人当中的某一个具体的实例,也就是某一个具体的帅哥,比方说名为zhangsan的帅哥。

那么zhangsan这个具体的帅哥如果用Python代码来描述的话,又该如何描述呢?具体代码如下。

class Shuaige:  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")zhangshan=Shuaige()

【代码分析】

● 第06行代码,Shuaige这个类里面是一群帅哥,只要在类名后面加一对括号就会实例化一个帅哥,如Shuaige()就会“出炉”一个帅哥。

而zhangsan = Shuaige()的意思是将刚“出炉”的这个帅哥命名为zhangsan,此时zhangsan就是一个具体的帅哥了。

在Python语言里把zhangsan这个帅哥称为对象或称为实例。

● 在Python语言中,把zhangsan称为变量,这个变量可以用于保存相关的数据信息,可以理解为变量是一个容器的名字,这个容器可以存放数字、字符串、对象等信息,本例通过Shuaige()“出炉”的帅哥相当于存放在了一个名为zhangsan的容器中,所以zhangsan代表了这个帅哥。

● 既然zhangsan这个帅哥(实例)是从Shuaige这个类里“出炉”的,那它自然也就拥有帅哥这一类人所共有的行为了。

也就是说zhangsan这个帅哥(实例)拥有Shuaige这个类里所包含的方法,这也就意味着zhangsan这个帅哥(实例)可以随时调用已在Shuaige类里面准备好的方法。

4、对象的方法

zhangsan这个帅哥(实例)如何调用Shuaige类里面已准备好的方法呢?

具体代码如下。

class Shuaige:  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")zhangshan=Shuaige()zhangshan.tiaowu()

【代码分析】

● 第07行代码,帅哥这个实例调用类中的方法很简单:实例名加“。”加具体的方法即可。

那么zhangsan.tiao_wu()意思是说,zhangsan这个实例调用类里面帅哥共有的tiao_wu()这个方法,而tiao_wu()这个方法的作用是打印出“我会跳舞”这几个字。

【注意事项】

● 由于Python代码是严格讲究缩进的,这一点非常重要,Sublime Text代码编辑器默认的缩进方式是“Tab”键,所以在编写Python代码时如果需要缩进,那么请使用“Tab”键进行缩进。

本例中所有的def关键字前需要按一下“Tab”键,所有print方法前面需要按两下“Tab”键进行缩进,其他不用缩进。

● 类名、方法名后面需要加“:”(冒号)。

● Python代码对大小写非常敏感,并且要在全英文模式下输入,初学者要特别需要注意,以免引起语法错误,而找不到原因。

【运行结果】

把以上的Python代码保存为Shuaige001.py,并通过Sublime Text运行,其运行结果如下。

我会跳舞[Finished in 0.1s ]
5、对象的属性

一 对象的属性

帅哥这一类人除了共有的行为之外,还有其他一些共有属性,例如身高、体重等。

一般帅哥身高都在180cm以上,体重是70kg左右。

如果要把帅哥这一类人所共有的属性也加入到刚刚新建的Shuaige这个类中,那么Python代码又如何表达呢?

具体代码如下。

class Shuaige:  def __init__(self,a,b):    self.height = a    self.weight = b  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")zhangshan=Shuaige(180,70)

【代码分析】

● 第02行代码,def关键字用来定义一个方法,这里定义了一个__init__方法,注意init前后都有两个下划线,一共是4个下划线。

__init__的方法是一个特殊的方法,这个方法的作用是给zhangsan这个帅哥(实例)的属性赋予初始值,也就是说帅哥共有属性被封装在__init__的方法里了。

● 第02行代码,__init__方法的括号里有3个参数,分别是self、a、b,而self这个参数代表的是zhangsan这个帅哥。

对初学者来说,可以这样理解,在类的外面,用zhangsan来代表刚“出炉”的帅哥,在类的内部,就用self代表这个帅哥,也就是说zhangsan和self指向的是同一个人(实例),只是取了两个不同的名字。

● 第03行代码和第04行代码,既然zhangsan和self指向的是同一个人,那么self.height=a等同于zhangsan.height=a,那么a具体等于多少就要从类的外部的zhangsan这个帅哥传递进来。

self.weight=b也是同样的道理。

● 第09行代码,前面说过Shuaige()会“出炉”一个帅哥,而Shuaige(180,70)里带有两个实际的数字。

那么这两个实际的参数就会传递给__init__(self,a,b)方法中的参数a和参数b,同时在创建zhangsan这个帅哥对象时,除了会传递180和70这两个参数给a和b外,Python还会把zhangsan这个帅哥自己也传递给__init__方法中的参数self,这也是为什么说self代表的也是zhangsan这个帅哥实例。

● zhangsan这个帅哥(实例)通过__init__的方法把自己拥有的属性封装在了一个叫Shuaige类的内部,那么在类的外部,zhangsan这个帅哥就可以在需要的时候去调用它。

● self作为一个标识,不管是类中的属性,还是类中的方法,只要它后面跟了self这个参数,就说明这个属性和方法是属于帅哥实例的,因为它们指向了同一个人。

二 对象调用自己的属性

zhangsan这个帅哥实例已把自己的属性封装在Shuaige这个类里面了,现在zhangsan这个帅哥实例需要用到这两个属性,那如何调用呢?

具体代码如下。

class Shuaige:  def __init__(self,a,b):    self.height = a    self.weight = b  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")zhangshan=Shuaige(180,70)printf(zhangsan.height)printf(zhangsan.weight)

【代码分析】

● 第10行和第11行代码,帅哥这个实例调用类中已封装好的属性很简单:对象名加“。”再加属性名即可。

那么zhangsan.height意思是zhangsan这个帅哥实例要调用自己的“身高”属性,如果要打印出属性的属性值则需要加上print(),zhangsan.weight的操作也如此。

【注意事项】

● 既然self代表的是zhangsan这个实例,那么在类的外部,可不可以使用self去调用自己的属性,即以上代码最后一行换成print(self.weight)。

这是不行的,虽然self也指向了zhangsan这个帅哥(实例),但它只能在类的内部使用。

●init____()方法里面有3个参数,这3个参数要用逗号隔开,同时新建实例时,zhangsan = Shuaige(180,70)类名里面的2个实参同样要用逗号隔开。

【运行结果】

把以上的Python代码保存为Shuaige002.py,并通过Sublime Text运行,其运行结果如下。

18070[Finished in 0.1s ]
6、函数的调用

函数的性质跟类里面的方法是一样的,只是函数是独立于类之外的,它是一个独立的个体,用于执行一个特定的功能。

定义一个函数跟定义类里的方法是一样的,都是用关键字def来定义。

一 自定义一个无参函数

def love():    printf("我爱你")

【代码分析】

● 第01行代码,关键字def用来定义一个函数(方法),def后面跟函数名,函数名后面有括号和冒号。

● 第02行代码,函数体内有一行代码是“print (“我爱你”)”指的就是这个函数要执行的任务是打印出“我爱你”这几个字。

二 调用函数

以上定义的love()函数是没有任何参数的,调用这种无参函数的方法很简单,具体如下。

def love():    printf("我爱你")love()

【代码分析】

● 第03行代码,直接通过函数love()就可以调用此函数来执行函数体内相应的动作。

【运行结果】

把以上的Python代码保存为love001.py,并通过Sublime Text运行,其运行结果如下。

我爱你[Finished in 0.1s ]

三 定义一个有参函数

def love2(a,b):    printf(a+b)

【代码分析】

● 第01行和第02行代码,通过def定义的love2()函数里面有两个参数,分别为a和b,函数体内有一行代码是print(a+b),那么此函数要执行的任务就是打印出a+b的值。

四 调用有参函数

调用有参函数的方法很简单,具体代码如下。

def love2(a,b):    printf(a+b)love2(8,9)

【代码分析】

● 第03行代码,通过函数名加实参的方式,如love2(8,9)就可以调用此函数,并将8和9两个实参传递给love2()函数中的两个形参a和b。

【运行结果】

把以上的Python代码保存为love002.py,并通过Sublime Text运行,其运行结果如下。

17[Finished in 0.1s ]
7、导入自定义模块

模块是Python语言中非常重要的概念,当把一组代码保存为.py格式的文件时,这个文件就是一个模块。

在Python体系中,一个Python文件就是一个模块,前面所提到的.py文件其实都是模块。

模块通常由函数和类组成,在这里自定义一个myboy.py的文件,即定义一个名为myboy的模块。

在myboy的这个模块中定义一个名为love()的函数,同时在myboy的模块中还定义了一个名为Shuaige的类,而在Shuaige这个类中又定义chang_ge()、tiao_wu两个方法。

该模块的具体代码如下。

def love():    printf("我爱你")class Shuaige:  def chang_ge(self):    printf("我会唱歌")  def tiao_wu(self):    printf("我会跳舞")

【代码分析】

● 第01行代码,定义了一个love()函数。

● 第02行代码,定义一个名为Shuaige的类,并且类中包含了两个方法。

一 通过import语句导入自定义的模块

当myboy模块创建成功后,就可以调用myboy模块中的函数和类中的方法,如何调用呢?

方法很简单,在myboy.py文件(模块)所在的目录创建一个空白py文件,并将其命名为myboy_one.py,通过Sublime Text代码编辑器打开myboy_one.py这个空白文件。

然后在myboy_one.py文件中通过import语句把myboy模块导入就可以达到调用myboy模块中的函数和方法的目的。

具体代码如下。

import mybodylisi =mybody.Shuaige()mybody.love()lisi.tiao_wu()

【代码分析】

● 第01行代码,通过import关键字导入myboy模块。

● 第02行代码,在Shuaige类中创建一个名叫lisi的帅哥实例,由于调用的是myboy模块中的类来创建实例,所以类名前面也需要加上模块名称。

● 第03行代码,调用myboy模块中的love()函数,调用love()函数时需要加入模块名称。

● 第04行代码,由于lisi这个帅哥实例是从Shuaige这个类“出炉”的,那它自然可以调用Shuaige这个类里的方法。

【注意事项】

● 在前文的例子中已经新建了一个zhangsan帅哥实例,怎么这里又新建了一个lisi帅哥实例呢?

在一个类中可以新建多个实例,Shuaige这个类代表的是所有帅哥,它里面的方法和属性也是所有帅哥共有的属性和方法,而不是指某一个帅哥的。

所以每当从Shuaige类里“出炉”一个新帅哥时,这个帅哥就拥有了这些方法和属性。

● myboy.py文件和myboy_one.py文件需要放在同一目录下,如不放在一个目录下,myboy_one模块将无法调用myboy模块中的函数和其类中的方法,对其他放置的方法初学者可暂时不考虑。

【运行结果】

把myboy_one.py文件中的代码重新保存,并通过Sublime Text运行,其运行结果如下。

我爱你我会跳舞[Finished in 0.1s ]

二 通过form…import语句导入自定义模块

如果在调用模块中的函数和类中的方法时不想使用模块名称这个前缀时,还可以使用form…import语句进行导入。

如myboy_one.py文件(myboy_one模块)中的代码还可以这样写成如下形式。

from mybody import lovefrom mybody import Shuaigelisi = Shuaigelovelisi.tiao_wu

【代码分析】

● 第01行代码,从myboy模块中直接导入love()函数。

● 第02行代码,从myboy模块中直接导入Shuaige类。

● 第03行代码,在Shuaige类中创建一个名叫lisi的帅哥实例,此时Shuaige类前面没有加模块名称这个前缀。

● 第04行代码,由于采用了form…import语句,所以在myboy_one模块中可以直接调用myboy模块中的love()函数,并且不用加模块名这个前缀。

● 第05行代码,由于lisi这个帅哥实例是从Shuaige类“出炉”的,那它自然可以调用Shuaige类里的tiao_wu()这个方法。

【运行结果】

把myboy_one.py文件中的代码重新保存后,并通过Sublime Text运行,其运行结果如下。

我爱你我会跳舞[Finished in 0.1s ]
8、导入Python标准模块

自定义模块是需要用户自己去编写的,而在Python自身的体系中已经提供了大量的标准模块,这些标准模块是Python自带的模块,可以用来完成很多的工作,这些模块不需要用户自己再去编写,因为在安装Python时这些标准模块已经安装好了。

如何调用Python自带的标准模块来实现其功能呢?

与前面的自定义模块一样,只需要使用import或from…import导入语句导入该模块即可。

例如,Python中提供了一个time的标准模块,time模块里面封装的函数和方法能够获取计算机的时间,还可以让程序休眠。

在time模块就提供了一个名叫sleep()的函数,sleep()函数的作用就是让程序休眠。

如果myboy_one模块要使用time模块中的sleep()函数,那该如何调用呢?

具体代码如下。

import mybodyimport timelisi = mybody.Shuaige()mybody.lovetime.sleep(5)lisi.chang_ge()

【代码分析】

● 第01行代码,通过import关键字导入myboy模块。

● 第02行代码,通过import关键字导入time模块。

● 第03行代码,在Shuaige类中创建一个名叫lisi的帅哥实例,由于调用的是myboy模块中的类来创建实例,所以类名前面也需要加上模块名称。

● 第04行代码,调用myboy模块中的love()函数,调用love()函数时需要加入模块的名称。

● 第05行代码,调用了time模块中的sleep()函数,此函数的作用是等待5秒再执行下一行的代码,由于使用的是import语句导入的,所以调用此函数时需要加入模块的名称。

● 第06行代码,由于lisi这个帅哥实例是从Shuaige类“出炉”的,那它自然可以调用Shuaige类里的方法。

【运行结果】

把myboy_one.py文件中的代码重新保存后,并通过Sublime Text运行,其运行结果如下。

我爱你我会跳舞[Finished in 0.1s ]

从以上运行结果可以看到,myboy_one模块既调用了自定义模块myboy中的函数和类中的方法,同时还调用了标准模块time中的函数。

可以看到这次运行代码消耗时间为5.1秒,比没有使用sleep()方法时慢了5秒。

9、导入第三方模块(Python与Selenium WebDriver模块的关系)

第三方模块和自定义模块其实是一个意思,因为它们都是Python体系以外的模块。

例如Selenium Webdriver自动化测试工具,这里面的Selenium Webdriver其实就是一个第三方开发者提供的模块。

在Selenium WebDriver这个模块中封装了一套操纵浏览器和网页元素的方法。

如果要调用Selenium WebDriver模块中的方法,就需要通过import语句或from…import语句把Selenium WebDriver模块导进来,然后再在Selenium WebDriver模块中新建一个实例,最后再通过实例调用Selenium WebDriver模块中所提供的各类方法进而操纵浏览器以及网页元素。

可以说用Python语言去写Selenium WebDriver自动化代码时,只关心模块的导入、实例的新建以及调用实例的哪个方法去操作页面元素,这便是Python和Selenium WebDriver之间存在的重要关系。

好了,今天分享到此哦,喜欢我,就关注我,期待下次相遇哦,么么哒~

6360812fdfd052179f3905c128ef8d03.png

end

往期推荐

软件测试|| 回归测试这些概念,作为测试人员必须要懂。

软件测试|| 今天聊聊关于软件测试报告这点事。

软件测试|| 这里有丰富的软件测试报告模板!(建议收藏)

软件测试|| 带你了解神秘的html,敢来试试吗?

软件测试|| 听说你还不了解XPath定位技术???

扫描二维码

获取更多精彩

阳哥说IT

0a8168aad09f33cb7450e0eec89b613b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值