当前位置:   article > 正文

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

pytest测试面试题

在这里插入图片描述

接上一篇博文: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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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
........
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

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

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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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中,每天\小时构建多次

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/396860
推荐阅读
相关标签
  

闽ICP备14008679号