超全Python自动化测试常见面试题及解析答案,一文搞定!

89 篇文章 2 订阅
21 篇文章 0 订阅

1.1、概述

在python的面向对象中,利用new方法创建对象, 然后把这个创建的对象传递到init函数中,以第一个参数进

1.2、详细描述

1.3、应用场景

2.1、概述lambda 创建匿名函数的语法。 pass 空语句。

2.2、详细描述

1、pass的作用不做任何事情,一般用做占位语句, 为了保证程序的完整性。

2.3、应用场景

3.1、概述is 比较 的是两个实例对象是不是同一个对象,也就是说这两个对象的地址,通过id()函数可以获取,是不是相同。 == 比较的是两个实例对象的值是否相等,比较的是内存中存放的内容,可以不是同一个对象,只要内容一样就可以了。

3.3、应用场景

is常用的地方是: 和None值进行比较 a is None 或者 a is not NoneNone 在 Python 语言中是一个单例对象, 如果你要判断某个变量是否为 None 时,记得使用 is而不是 ==,因为只有 is才能在严格意义上表示某个变量是否是 None。

1.1、概述:

分别代表元组和字典的两种形式, 他们可以作为形式参数存在也可以作为实际参数存在。作为形式参数存在被称为打包,作为实际参数存在被称为拆包

1.2、详细描述:

作为形式参数(打包):将位置的实际参数打包到元组中, 将关键字的实际参数打包到字典中。

def 函数名字(*args): #打包位置实际参数放在元组中
pass

函数名字(实际参数1,实际参数2)

def 函数名字(**kwargs): # 打包关键字实际参数放在字典中
pass
函数名字(关键字1=实际参数1,关键字2=实际参数2)
作为实际参数(拆包): 将元组或者字典展开作为实际参数传给形式参数:
def 函数名字(形式参数1,形式参数2):
pass
元组 = (数据1,数据2)
函数名字(*元组) #将元组中的元素一一对应传递给形式参数
def 函数名字(name,age):
pass
字典 = {name:数据1,age:数据2}
函数名字(**字典) #将字典中的元素按照键一一对应传递给形式参数

1.3、应用场景:
在实现装饰器时,为了可以对任意的函数都能进行装饰, 内置的闭包函数就会用*args,**kwargs来处理。
定义未知个数的形式参数。

2.1、概述:
filter() 函数用于过滤序列,过滤掉不符合条件的元素, 返回由符合条件元素组成的新列表。
map() 会根据提供的函数对指定序列做映射
reduce() 函数会对参数序列中元素进行累积。
2.2、详细描述:

filter()函数
1.语法:

filter(function, iterable)
该接收两个参数,第一个为函数,第二个为序列, 序列的每个元素作为参数传递给函数进行判,然后返回True 或 False,最后将返回 True 的元素放到新列表中。

2.案例: 得到列表中的奇数
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
for n in newlist:
print(n)

1.语法:
map(function, iterable, …)
第一个参数 function 以参数序列中的每一个元素调用 function 函数, 返回包含每次 function 函数返回值的新列表。

  1. 案例: 提供了两个列表,对相同位置的列表数据进行相加
    result = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    print(result)# [3, 7, 11, 15, 19]
    将后面两个列表中的分别一一对应取出之后传递给x,y.

1.语法:
reduce(function, iterable[, initializer])
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素 进行操作, 得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。python3中将 reduce 放在functools模块中了

  1. 案例: 提供了两个列表,对相同位置的列表数据进行相加
    from functools import reduce
    result = reduce(lambda x, y: x+y, [1,2,3,4,5])
    print(result)#15

2.3、应用场景:

面试题: 分别使用map, reduce,filter函数完成下面的任务

1、计算1-100的和

from functools import reduce
result = reduce(lambda x, y: x + y, range(1, 101))
print(result)

2、1-10,对每个数字的平方

result = map(lambda x:x**2,range(1,11))for n in result:print(n)

result = filter(lambda x: “c” in x, {“a”, “ab”, “abc”, “bc”, “cd”})for n in result:print(n)

3、Python的可变类型和不可变类型包含哪些?

3.1、概述:

可变类型 包含: 列表(List)、字典(Dict)、集合(Set)。
不可变类型 包含: 字符串(String)、 整数(int)、小数(Float) 布尔(Bool)、元组(Tuple)

3.2、详细描述:

3.2.1可变数据类型的特点

里面的值发生改变时不会新生成一个变量.内存地址不变. 因为改变的数据会发生在内存中.

3.2.2不可变数据类型的特点

只要值发生了改变.就会重新开辟一个内存空间. 内存地址也发生了改变, 如果元组中的元素是可变数据类型, 该元素中的值是可以改变的。
values = (“张飞”, [“刘备”])
values[1][0] = “刘玄德”
print(values) #(‘张飞’, [‘刘玄德’])

答:
super 用于继承父类的方法、属性。super 是新式类中才有的,所以 Python2 中使用时,要在类名的参数中写 Object。Python3 默认是新式类,不用写,直接可用。 使用 super 可以提高代码的复用性、可维护性。修改代码时,只需修改一处。代码举例:
在这里插入图片描述
在这里插入图片描述
答:所有的结果都是生成器表达式, 不调用它,不从里面取值,就不干活。附上我的推导过程:
在这里插入图片描述
答:HTML、JavaScript 代码
在这里插入图片描述
Vue 代码编写:
在这里插入图片描述
答:list(set(L))、

答:空列表(当时有点紧张, 一直在“空列表”和“索引超出范围”两个答案之间徘徊)。
答:注意,个人觉得这个题有坑,列表的元素不是字符串,所以不能 ‘’.join(L) 。
以下是过程:
在这里插入图片描述
答:一般都是问列表和元组有什么不同。 (1)获取元素的方式不同。列表通过索引值获取,字典通过键获取。 (2)数据结构和算法不同。字典是 hash 算法,搜索的速度特别快。 (3)占用的内存不同。
答:(1)调用 terminate 方法。 (2)使用 subProcess 模块的 Popen 方法。使用简单,具体用法,这里不展开。

答:(1)区别:
① 地址空间和其它资源(如打开文件):进程之间相互独立,同一进程的各线程之间共享。某进程内的线程在其它进程不可见。 ② 通信:进程间通信 IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。③ 调度和切换:线程上下文切换比进程上下文切换要快得多。④ 在多线程操作系统中,进程不是一个可执行的实体。 (2)使用场景:同时操作一个对象的时候,比如操作的是一个全局变量,我用线程,因为全局变量是所有线程共享的。

答:
ORM 框架可以将类和数据表进行对应,只需要通过类和对象就可以对数据表进行操作。通过类和对象操作对应的数据表,类的静态属性名和数据表的字段名一一对应, 不需要写 SQL 语句。ORM 另外一个作用,是根据设计的类生成数据库中的表。11、写一段代码,ping 一个 ip 地址,并返回成功、失败的信息。

答:使用 subProcess 模块的 Popen 方法(使用简单,具体用法,这里不展开)。
答:(1)流程:获取接口文档, 依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。 (2)request 内容:
在这里插入图片描述
答:Selenium Grid。
答:守护精灵,和 Python 并发编程中的 daemon 原理一样,父进程/父线程的代码执行完毕,它就终止, 要写在 start 方法前面。另外,要找到配置文件,注释掉两行代码。
答:一口气,劈里啪啦说了 10 多个。
答:用的不深入,说了基本操作,比如定时构建执行代码。
答:小步快跑,拥抱变化。测试中, 可以通过行为驱动测试,有个框架 lettuce 可以用。
答:了解,没用过。然后说了下对 Docker 大概的认识、优势。
答:此处省略 n 个字。
答:此处省略 n 个字。
答:此处省略 n 个字。
答:此处省略 n 个字。

在自动化测试、测试开发岗面试中,编程知识、Linux 都是必问的。测试开发人员的知识面既要有一定的广度,同时还要有扎实的编码基础。

路漫漫其修远兮,我还有很长的路要走。接下来的规划,进一步提升自己的实力。整理不易还请动动发财手点个赞哦 ~~

我整理了一份216页软件测试大厂面试题,以及2021推荐最新的简历模板,送给小伙伴们,关注公众号软件测试小dao自行领取,和一些小伙伴建立一个技术交流群,一起探讨技术,分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!1033482984

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python接口自动化测试面试题: 1. 请介绍一下接口自动化测试的概念和意义。 接口自动化测试是指利用自动化工具通过发送HTTP请求和验证响应来自动化执行接口测试的过程。它的意义在于提高测试效率、减少人工测试的工作量、提升测试的准确性和可重复性。 2. 请说明Python在接口自动化测试中的优势。 Python在接口自动化测试中有以下优势: - 简单易学:Python语法简洁明了,相比其他编程语言更易上手,减少学习成本。 - 强大的第三方库支持:Python拥有丰富的第三方库(例如requests、unittest、pytest),能够满足接口测试的绝大部分需求。 - 优秀的文档和社区支持:Python有完善的文档和庞大的开源社区,可以快速解决问题和获取案例。 - 丰富的测试框架和工具:Python提供了多种测试框架和工具(例如unittest、pytest、HttpRunner),便于开展接口自动化测试。 3. 请列举一些常用的Python库或工具来实现接口自动化测试。 常用的Python库和工具有: - requests:用于发送HTTP请求并获取响应,可以实现接口的调用和验证。 - unittest:Python的标准测试框架,可以进行接口测试的断言和结果判断。 - pytest:功能强大的第三方测试框架,支持参数化和插件扩展,适用于大型和复杂的接口自动化测试。 - HttpRunner:一个基于Python的接口自动化测试框架,支持编写接口测试用例和生成测试报告。 - Beautiful Soup:用于解析HTML和XML文档,对于接口返回的HTML或XML数据进行解析和提取。 - PyYAML:用于解析和生成YAML格式的数据,适用于接口测试数据的读写和管理。 这些工具和库的使用可以帮助我们更便捷地实现接口自动化测试,提高测试效率和质量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值