python自动化测试面试题(四)(持续更新)

在这里插入图片描述

接上一篇博文:https://blog.csdn.net/YZL40514131/article/details/125940552

这里写目录标题

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

1、单独调用第三方服务,查看返回结果;
2、引入mock机制,假如正常返回的情况下,测试我们的系统是否存在问题;
3、建议开发增加日志,详细记录调用第三方接口的过程,记录调用前接口入参,返参等信息;

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

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

例如:

class Person:
    def __init__(self,name):
        self.name=name

    def play(self):
        pass

def run(self):
    print(self.name)

Person.age=18

if not hasattr(Person, 'age1'):
    setattr(Person, 'age1', 19)

p1=Person('p1')
p1.run=types.MethodType(run,p1)
p1.run()

63、做自动化测试时关注的一些指标?

1、自动化测试用例的覆盖率=自动化测试用例数/所用用例总数,这个比例越高测试反馈越快,成本节约越多

2、节省的时间成本=手工测试所花的时间-自动化测试所花的时间

3、自动化测试的投入=开发脚本的投入+脚本维护的投入+工具价格

4、自动化测试发现的缺陷数,每次回归测试时自动化测试发现的缺陷数及漏测数,反应了自动化用例的有效性

5、自动化测试投入产出比

ROI=(手工测试的成本-自动化测试成本)/自动化测试成本

ROI如果是负值说明自动化测试的成本未收回,ROI为正值说明自动化测试成本已回收,且值越大说明回报越好

64、如何在Python中随机化列表中的元素?

可以使用shuffle函数进行随机列表元素

65、当Python退出时,为什么不清除所有分配的内存?

当Python退出时,尤其是那些对其他对象具有循环引用的Python模块或者从全局名称空间引用的对象并没有被解除分配或释放。

无法解除分配C库保留的那些内存部分。

退出时,由于拥有自己的高效清理机制,Python会尝试取消分配/销毁其他所有对象。

66、什么是 DNS?

DNS 是域名系统 (Domain Name System),DNS 是用来做域名解析的,它会在你上网输入 网址后,把它转换成 IP,然后去访问对方服务器;没有它,你想上百度就要记住百度的 IP, 但有了 DNS 的处理,你只需要记住对应网站的域名,即网址就可以了。

67、输出结果是什么?

def f(x, l=[]):
    for i in range(x):
        l.append(i * i)
        print(l)
f(2)
f(3, [3, 2, 1])
f(3)

结果:
[0]
[0, 1]
[3, 2, 1, 0]
[3, 2, 1, 0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0]
[0, 1, 0, 1]
[0, 1, 0, 1, 4]

68、用python写一段代码,计算1-1000以内能被7整除,除以5余3的整数,并按行打印

for i in range(1, 1000):
    if i % 7 == 0 and i % 5 ==3:
        print(i)


执行结果:
28
63
98
133
168
........

69、小明有一百元,他想买一百本书,英语书5元一本,数学书3元一本,语文书0.5元一本,请问他有多少种买法。请编程解决这个问题,可以使用任何编程语言,包括伪语言。

三本书的价格分别为: 5,3,0.5,那么能买到最多的数学书为20本,英语书33本,语文书200本。但是也有组合的买法,所以可以通过一个三重for循环来实现, ijk分别代表购买数学,英语,语文书的数量,循环条件分别是i<=20,j<=33,k<=200,那么只要满足 i+j+k == 100,5i+3j+0.5*k<= 100即可。最后统计所有的组合就是买法的数量。

n = 0
for i in range(21):
    for j in range(34):
        for k in range(201):
            if 5 * i + 3 * j + k * 0.5 <= 100 and i + j + k == 100:
                n += 1
print(n)

70、已知L = [“a”, “b”, “c”, “d”, “e”, “f”, “g”],则L[3]的值是_ L[::5]的值是__ L[::2]值是_

L = ["a", "b", "c", "d", "e", "F", "g"]

print(L[3])
print(L[::5])
print(L[::2])

执行结果:
d
['a', 'F']
['a', 'c', 'e', 'g']

71、已知列表x=[1, 2],那么表达式 list(enumerate(x)) 的值

x = [1, 2]
a1 = list(enumerate(x))
print(a1)
# 执行结果:[(0, 1), (1, 2)]

72、用python写一个函数,将一个字符串中给定的子串字符按从小到大的输出,第一个字符的位置为0

如: myOrder( abejykhsesm’,2,5)
输出: ehjky

def fun(s,start,len):
    s=s[start:start+len]
    s1=list(s)
    s1.sort()
    print(s1)
    res=''.join(s1)
    print(res)

fun('qweqweqwe',2,5)

73、对输入的整数数组,输出数组元素中的最大值、最大值的个数、最小值和最小值的个数

注意:return多个值,多个值组成一个元组返回

def fun1(l):
    l.sort(reverse=True)
    max=l[0]
    max_count=l.count(max)
    min=l[-1]
    min_count=l.count(min)
    return max,max_count,min,min_count

l=[1,4,6,8,9,9,5,3,6]
print(fun1(l))

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

注意:列表的元素不是字符串,所以不能 ‘’.join(L)。

以下是过程

s = ''
for i in L:
    s = s + str(i)
 
print(s)    # 12356
print(type(s))  # <class 'str'>

75、谈下python的GIL

GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

76、selenium中hidden或者是display = none的元素是否可以定位到?(重要)

可以:定位是可以定位到的,但是不能操作,可以判断元素is_displayed()
想点击的话,可以用js去掉dispalay=none的属性

77、post请求的四种参数形式是什么?

Application/x-www-form-urlencoded:将参数以一组键对值的方式发送
Multipart/form-data:支持单组和多组文件上传
Application/json:根据后端接口的定义支持数据类型
Text/xml

78、在浏览器中输入URL,回车之后发生了什么?

1.解析地址
2.浏览器查询,是否存在浏览器缓存中,如果没有
3.Tcp连接,想服务器发送请求
4.服务器返回接口,并且在浏览器中添加缓存
5.前端渲染页面

======================================

(1)URL 解析

(2)DNS 查询

(3)TCP 连接

(4)处理请求

(5)接受响应

(6)渲染页面

79、selenium 自动化测试中遇见过哪些异常?

方法说明
NoSuchElementException当选择器没有返回一个元素时,异常抛出
ElementNotVisibleException元素DOM存在,但它是不可见的,不能与之进行交互,异常将抛出
NoSuchAttributeException当选择元素不存在该属性时,抛出异常
ElementNotSelectableException当选择不可选元素时,抛出异常
NoSuchFrameException当切换的框架不存在时,异常抛出
TimeoutException当执行操作命令执行超过最长时间完成,抛出异常
NoSuchWindowException当切换的目标窗口不存在时,异常抛出

80、请描述下你所设计的Web自动化框架的特点?

1、通过pytest单元测试框架组织管理测试用例
2、引入page object思想对用例进行分层设计,业务代码和测试代码相分离
3、页面元素共性操作提取:basepage封装,实现实时执行日志输出,异常实时捕获,用例失败截图
4、测试用例中,使用数据驱动
5、logging日志引入,问题定位
6、allure报表,用例失败后截图
7、用例失败重试,提高用例稳定性
8、集成到jenkins中,每天\小时构建多次

在这里插入图片描述
在这里插入图片描述

  • 29
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 40
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值