Python 自动化测试面试题目.docx

上传人:b****3 文档编号:6732088 上传时间:2023-05-10 格式:DOCX 页数:14 大小:21.68KB
下载 相关 举报
Python 自动化测试面试题目.docx_第1页
第1页 / 共14页
Python 自动化测试面试题目.docx_第2页
第2页 / 共14页
Python 自动化测试面试题目.docx_第3页
第3页 / 共14页
Python 自动化测试面试题目.docx_第4页
第4页 / 共14页
Python 自动化测试面试题目.docx_第5页
第5页 / 共14页
Python 自动化测试面试题目.docx_第6页
第6页 / 共14页
Python 自动化测试面试题目.docx_第7页
第7页 / 共14页
Python 自动化测试面试题目.docx_第8页
第8页 / 共14页
Python 自动化测试面试题目.docx_第9页
第9页 / 共14页
Python 自动化测试面试题目.docx_第10页
第10页 / 共14页
Python 自动化测试面试题目.docx_第11页
第11页 / 共14页
Python 自动化测试面试题目.docx_第12页
第12页 / 共14页
Python 自动化测试面试题目.docx_第13页
第13页 / 共14页
Python 自动化测试面试题目.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Python 自动化测试面试题目.docx

《Python 自动化测试面试题目.docx》由会员分享,可在线阅读,更多相关《Python 自动化测试面试题目.docx(14页珍藏版)》请在冰点文库上搜索。

Python 自动化测试面试题目.docx

Python自动化测试面试题目

Python自动化测试面试题目

1、super是干嘛用的?

在Python2和Python3使用,有什么区别?

为什么要使用super?

请举例说明。

答:

∙super用于继承父类的方法、属性。

∙super是新式类中才有的,所以Python2中使用时,要在类名的参数中写Object。

Python3默认是新式类,不用写,直接可用。

∙使用super可以提高代码的复用性、可维护性。

修改代码时,只需修改一处。

∙代码举例:

1.

classbaseClass:

2.

3.

deftest1(self,num):

4.

5.

print(num)

6.

7.

8.

9.

classsonClass(baseClass):

10.

11.

deftest2(self):

12.

13.

super().test1(num)

14.

15.

16.

17.

son=sonClass()

18.

19.

son.test1(11)

20.

2、阅读以下代码,推导最后结果:

1.

defadd(n,i):

2.

3.

returnn+i

4.

5.

6.

7.

deftest():

8.

9.

foriinrange(4):

10.

11.

yieldi

12.

13.

14.

15.

g=test()

16.

17.

18.

19.

fornin[1,10,5]:

20.

21.

g=(add(n,i)foriing)

22.

23.

24.

25.

print(list(g))#结果是[15,16,17,18]

26.

答:

 所有的结果都是生成器表达式,不调用它,不从里面取值,就不干活。

附上我的推导过程:

1.

n=1

2.

3.

g=(add(n,i)foriintest())

4.

5.

#print(list(g))#[1,2,3,4]

6.

7.

8.

n=10

9.

10.

g=(add(n,i)foriin(add(n,i)foriintest()))

11.

12.

#print(list(g))#[20,21,22,23]

13.

14.

15.

n=5

16.

17.

g=(add(n,i)foriin(add(n,i)foriin(add(n,i)foriintest())))

18.

19.

g=(add(n,i)foriin(add(n,i)foriin(5,6,7,8)))

20.

21.

g=(add(n,i)foriin(10,11,12,13))

22.

23.

24.

g=(15,16,17,18)

25.

26.

print(list(g))#[15,16,17,18]

27.

3、快速编写前端HTML、JavaScript、Vue代码。

答:

∙HTML、JavaScript代码:

1.

DOCTYPEhtml>

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

xxx公司

14.

15.

xxx公司是一家......

16.

17.

18.

19.

20.

21.

{{a}}

22.

23.

click="add()">

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

44.

∙Vue代码编写:

1.

importVuefrom"vue";

2.

3.

newVue({

4.

5.

el:

"#mybox",

6.

7.

data:

{

8.

9.

a:

100

10.

11.

},

12.

13.

methods:

{

14.

15.

add:

function(){

16.

17.

this.a++;

18.

19.

}

20.

21.

}

22.

23.

});

24.

4、L=[1,2,3,11,2,5,3,2,5,3],用一行代码得出[11,1,2,3,5]。

答:

 list(set(L))

5、L=[1,2,3,4,5],L[10:

]的结果是?

答:

 空列表(当时有点紧张,一直在“空列表”和“索引超出范围”两个答案之间徘徊)。

6、L=[1,2,3,5,6],如何得出'12356'?

答:

 注意,个人觉得这个题有坑,列表的元素不是字符串,所以不能 ''.join(L)。

以下是过程:

1.

s=''

2.

3.

foriinL:

4.

5.

s=s+str(i)

6.

7.

8.

9.

print(s)#12356

10.

11.

print(type(s))#

12.

7、列表和字典有什么区别?

答:

 一般都是问列表和元组有什么不同。

(1)获取元素的方式不同。

列表通过索引值获取,字典通过键获取。

(2)数据结构和算法不同。

字典是hash算法,搜索的速度特别快。

(3)占用的内存不同。

8、如何结束一个进程?

答:

(1)调用terminate方法。

(2)使用subProcess模块的Popen方法。

使用简单,具体用法,这里不展开。

9、进程、线程有什么区别?

什么情况下用进程?

什么情况下用线程?

答:

(1)区别:

∙①地址空间和其它资源(如打开文件):

进程之间相互独立,同一进程的各线程之间共享。

某进程内的线程在其它进程不可见。

∙②通信:

进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

∙③调度和切换:

线程上下文切换比进程上下文切换要快得多。

∙④在多线程操作系统中,进程不是一个可执行的实体。

(2)使用场景:

同时操作一个对象的时候,比如操作的是一个全局变量,我用线程,因为全局变量是所有线程共享的。

10、什么是ORM?

为什么要用ORM?

不用ORM会带来什么影响?

答:

∙ORM框架可以将类和数据表进行对应,只需要通过类和对象就可以对数据表进行操作。

∙通过类和对象操作对应的数据表,类的静态属性名和数据表的字段名一一对应,不需要写SQL语句。

∙ORM另外一个作用,是根据设计的类生成数据库中的表。

11、写一段代码,ping一个ip地址,并返回成功、失败的信息。

答:

 使用subProcess模块的Popen方法(使用简单,具体用法,这里不展开)。

12、说说接口测试的流程,介绍一下request有哪些内容。

答:

(1)流程:

获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。

(2)request内容:

①封装了各种请求类型,get、post等;

②以关键字参数的方式,封装了各种请求参数,params、data、headers、token等;

③封装了响应内容,status_code、json()、cookies、url等;

④session会话对象,可以跨请求。

13、ui自动化,如何做集群?

答:

 SeleniumGrid。

14、移动端UI自动化,经常会自动安装2个程序,你知道那两个程序是什么东西不?

答:

 守护精灵,和Python并发编程中的daemon原理一样,父进程/父线程的代码执行完毕,它就终止,要写在start方法前面。

另外,要找到配置文件,注释掉两行代码。

15、说5个以上Linux命令。

答:

16、介绍一下你在这个项目中是如何使用Jenkins的。

答:

,说了基本操作,比如定时构建执行代码。

17、说说你对敏捷模式的认识。

答:

小步快跑,拥抱变化。

测试中,可以通过行为驱动测试,有个框架lettuce可以用。

18、了解过Docker不?

答:

 了解,没用过。

然后说了下对Docker大概的认识、优势。

 

一、json和字典dict的区别

首先python里面的基础数据类型有:

int、str、float、list、bool、tuple、dict、set这几种类型,里面没json这种数据类型。

JSON(是一种轻量级的数据交换格式。

它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得JSON成为理想的数据交换语言。

易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

由于你的代码是python写的(也有可能是php,java,c,ruby等语言),但是后端接口是java写的(也有可能是其它语言),不同的语言数据类型是不一样的(就好比中国的语言和美国的语言数据类型也不一样,中国的一般说一只羊,一头牛,美国都是a/an这种单位),所以就导致你提交的数据,别的开发语言无法识别,这就需要规范传输的数据(传输的数据都是一个字符串),大家都遵循一个规范,按一个标准的格式去传输,于是就有就json这种国际化规范的数据类型。

json本质上还是字符串,只是按key:

value这种键值对的格式来的字符串b='{"a":

1, "b":

2, "c":

true}'

二、测试的数据放在哪?

1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)

2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成

3.对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以

4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理

5.对于邮箱配置的一些参数,可以用ini配置文件

6.对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据

7.对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的

三、什么是数据驱动,如何参数化?

 

四、下个接口请求参数依赖上个接口的返回数据

这个很容易,不同的接口封装成不同的函数或方法,需要的数据return出来,用一个中间变量a去接受,后面的接口传a就可以了

可以参考登录的cookie或token

五、依赖于登录的接口如何处理

参考requests的方法

六、依赖第三方的接口如何处理

这个需要自己去搭建一个mock服务,模拟接口返回数据

mock服务搭建需要自己能够熟练掌握,面试会问你具体如何搭建,如何模拟返回的数据,是用的什么格式,如何请求的

七、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试

此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的

比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。

平常手工测试造数据,直接在数据库改字段状态。

那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作

测试用例前置操作,setUp做数据准备

后置操作,tearDown做数据清理

八.接口产生的垃圾数据如何清理

跟上面一样,造数据和数据清理,需用python连数据库了,做增删改查的操作

测试用例前置操作,setUp做数据准备

后置操作,tearDown做数据清理

九.一个订单的几种状态如何全部测到,如:

未处理,处理中,处理失败,处理成功

跟上面一样,也是考察造数据,修改数据的状态

十、get和post的区别

十一、post请求的四种参数形式是什么

application/x-www-form-urlencoded 

multipart/form-data 

application/json 

text/xml

十一、公司有用到第三方服务,出了问题,打电话给第三方,第三方不承认,这时候日志又显示不到错误,应该怎么处理

1、单独调用第三方服务,查看返回结果;

2、引入mock机制,假如正常返回的情况下,测试我们的系统是否存在问题;

3、建议开发增加日志,详细记录调用第三方接口的过程,记录调用前接口入参,返参等信息;

十二、接口自动化中的关联怎么处理?

将请求返回的结果反射到类属性中,使用setattr()函数,下个请求调用这个类

十三、自动化测试怎么校验结果?

使用断言,预期结果值和实际结果值进行对比;

十四、自动化使用的测试框架是什么?

简述自动化框架的设计、维护

1、自动化使用的测试框架:

语言:

python

测试框架:

unittest(assertEqual,assertTure,assertFalse)

接口调用:

requests(API非常简洁)

数据驱动:

ddt(装饰器:

ddt类,unpack测试方法装饰器解包时候,data测试方法装饰器,可迭代的数据类型)

注:

普通用户,管理用户,数据库,配置文件---基础数据

数据管理:

openpyxl(excel,CSV,json,yaml,txt)

数据库交互:

pymysql---根据数据库选择相应的第三方模块来完成

数据格式的转换:

eval,json

日志处理:

logging---清晰的执行过程,快速定位问题

持续集成:

Jenkins(通过插件HTMLPublisher/git/EmailExtension)进行自动构建,生成HTML,发送邮件

2、自动化框架的设计、维护:

1、数据与代码分离,(数据驱动)==数据驱动框架==

例如:

参数不一样,响应不一样

2、结构分层(数据层,用例层,逻辑性)

逻辑层:

公用的方法,封装起来,避免用例层的代码冗余

数据层:

例如,设计Excel,excel读取,参数化替换等

用例层:

存放测试用例

十五、在接口自动化测试中都用到了哪些包:

pymysql:

连接数据库

ddt:

requests:

urllib:

xlrd:

xlwt:

xlutils:

十六、根据什么来做断言?

1、协议状态码:

200,404,503    2、业务状态码:

status:

0   3、业务数据

十七、具体的在这个项目中自动化怎么应用到实际的,您对自动化结果的分析

完成所有的自动化测试框架的设计和实现后,进行接口测试,然后集成到jenkins,配置定时执行,生成html报表,查看测试通过率,查看接口的功能

每次发版时,进行回归测试,新功能开发未提测前

 十八、做好测试计划的关键是什么?

明确测试目的,增强测试计划的实用性,保证测试用例的实用性和覆盖率,完全需求文档和规格指标书等,严格界定测试周期,测试轮次,测试覆盖模块等

十九、super是干嘛用的?

在Python2和Python3使用,有什么区别?

为什么要使用super?

请举例说明。

super用于继承父类的方法、属性。

super是新式类中才有的,所以Python2中使用时,要在类名的参数中写Object。

Python3默认是新式类,不用写,直接可用。

使用super可以提高代码的复用性、可维护性。

修改代码时,只需修改一处。

父类:

classCar():

    def__init__(self,make,model,year):

        self.make=make

        self.model=model

        self.year=year

def.....

classElectricCar(Car):

    def__init__(self,make,model,year):

       --------初始化父类的属性

        super().__init__(make,model,year):

    def....

子类就可以使用父类的属性

二十、L=[1,2,3,11,2,5,3,2,5,3],用一行代码得出[11,1,2,3,5]

答:

list(set(L))

二十一、L=[1,2,3,4,5],L[10:

]的结果是?

答:

空列表[]

二十二、list=[1,2,3,4],如何得出'1234'?

list=[1,2,3,4]

list2=''

for i in list:

    list2=list2+str(i)

print(list2)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2