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

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 python自动化测试面试题(四)(持续更新),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述

接上一篇博文: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中,每天\小时构建多次

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123225.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!