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

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

  • 相关阅读:
    JDK21更新内容:临时变量
    建议你们来看看这几个领导小心机
    EasyGBS如何解决对讲功能使用异常?
    使用SuperMap iDesktopX数据迁移工具迁移ArcGIS数据
    使用匿名函数在Golang中的好处
    Flutter 关于序列化JSON之json_serializable库的使用
    MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
    docker-compose部署mysql5.7主从
    PD协议诱骗取电XSP01支持Type-C 5V9V12V15V20V原理图
    Fiverr是什么?做外贸独立站能在Fiverr找到哪些外包服务?
  • 原文地址:https://blog.csdn.net/YZL40514131/article/details/126006702