首页 > 编程知识 正文

自动化测试常见面试题,python自动化面试题

时间:2023-05-04 07:38:04 阅读:129074 作者:4378

内容目录(原文见公众号python宝) 1、super有什么用? Python2和Python3有什么区别? 为什么要用super? 请举例说明。

super用于继承父类的方法、属性。

因为super只存在于新类中,所以如果要在Python2中使用,请在类名参数中写Object。 默认情况下,Python3是一个新类,不需要写,可以直接使用。

使用super可以提高代码的复用性、可维护性。 修改代码时,请只修改一处。

class baseclass 3360 deftest1(self,num ) : print (num ) classsonclass ) : def test2(self ) :super () (base class )

dict={'name':'zhangsan ',' age':'18'}#在词典中赋值的两种方法dict['sex']='男' dict={ ' education ' 338 } #从词典中取值的两种方法print(dict['name'], dict.get ) ' name ' ) )直接使用dict['key']时,如果相应的key不存在,keyerror将出现错误,表示没有该key的值#,而不是#

大多数操作系统支持同时执行多个任务。 通常,一个任务是一个程序,而每个正在运行的程序是一个进程。 程序运行时,内部可能包含多个顺序执行流,每个顺序执行流都是线程。

通常,所有正在运行的任务都对应于一个进程。 程序进入内存运行后,就是一个过程。 进程是正在运行的程序,具有独立的功能。 进程是系统调度资源分配的独立单元。

该进程可以有多个线程,线程必须有父进程。 线程可以有自己的堆栈、自己的程序计数器和自己的局部变量,但没有系统资源,与父进程中的其他线程共享该进程拥有的所有资源。

线程是程序中独立、同时运行的流,线程的分区大小小于进程,因此多线程程序具有很高的并发性。 进程在运行中具有独立的存储器单元,多个线程共享内存,从而大大提高程序的执行效率。

4 .区分is和==is进行判断的是a对象是否是b对象,用id进行判断。==判断的是a对象的值和b对象的值是否相等,由value判断。 5.sort和sorted的区别sort适用于列表,sorted可以对包含字符串的所有可重复对象进行排序。 对于无序列表a,调用a.sort ()对a进行排序并返回a。 sort ) )函数更改要排序的列表的内容。 另一方面,对于无序列表a,调用sorted(a )对a进行排序后,返回新列表而不影响a。2.python中的字典,至少用两种方法取值与赋值

3.python的多线程是在什么情况下使用,一般一个进程下是否支持多线程?:深度复制意味着完全复制成为新对象,复制的对象和复制的对象没有任何关系,无论彼此如何变化都不会相互影响

6. Python中copy和deepcopy中的区别:浅副本并不是单独存在独立对象,它只是为原始数据块添加新标签,因此当原始对象发生更改时,新对象也会发生更改。

但是,如果在浅拷贝之后原始对象的父对象发生了变化,则新对象不会发生变化; 如果原始对象的子对象发生更改,新对象也会发生更改。

deepcopy

装饰器是修饰其他函数功能的函数,他们有助于使我们的代码更短。

装饰器本质上是Python函数或类,可以向其他函数或类添加附加功能,而无需修改代码。 装饰器的返回值也是函数/类对象。

常用于具有切面要求的场景,如日志插入、性能测试、事务处理、缓存和权限检查

等场景。 装饰器是解决这种问题的优秀设计。 有了装饰器,很多与函数功能本身无关的雷同代码可以被提取到装饰器中继续重复使用。

总之,装饰器的作用是向已经存在的对象添加其他功能。

copy

rong>

        多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承);多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

9. python是否支持多重继承?

        在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。可以在类名的()后边添加多个类,来实现多重继承。
        多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的方法。
        在没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。如果多个父类中有同名的方法,则会先在第一个父类中寻找,然后找第二个,最后找第三个。前边父类的方法会覆盖后边父类的方法。

10. python的匿名函数?

        对lambda函数,它其实是一个类似于def的函数,只不过lambda是一个不需要定义函数名的匿名函数。当我们在有些时候,需要做一些简单的数学计算时,如果定义一个def函数显得过于繁琐,但是不定义一个类似“函数”的对象,又显得不太方便,所以这里lambda函数就派上用场了。

11、如何结束一个进程?

    (1)调用 terminate 方法。 

    (2)使用 subProcess 模块的 Popen 方法。使用简单,具体用法,这里不展开。

12. 说说接口测试的流程,介绍一下 request 有哪些内容。

        (1)流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。
        (2)request 内容:

                ① 封装了各种请求类型,get、post 等;
                ② 以关键字参数的方式封装各种请求参数,params、data、headers、token 等;
                ③ 封装了响应内容,status_code、json()、cookies、url 等;
                ④ session 会话对象,可以跨请求。

13. Python中常见的数据结构

字符串类型(String)

整数类型(Int)

小数类型(Float)

布尔类型(Bool)

列表类型(List)

元组类型(Tuple)

字典类型(Dict)

集合类型(Set)

'''详细描述:1.   字符串类型(String): 通过两个或者三个单引号或者双引号定义2.   整数类型(Int): 不带小数点的数字3.   小数类型(Float): 带小数点的数字4.   布尔类型(Bool): 只有两个值 True 或者 False5.   列表类型(List): 使用[]定义的有序的数据集合6.   元组类型(Tuple): 使用()定义的数据集合,元素不能够修改, 如果元素的值是可变类型该值里面的内容是7.   可以被修改的。8.   字典类型(Dict): 使用{}定义的键值对的数据集合, 键是对值进行描述,键是唯一的,值可以重复9.   集合类型(Set): 使用{}定义的数据集合, 里面的数据是唯一'''# 应用场景'''列表类型(List):    1. 一般用来存储同一类型同一语义的数据集合。    2. 比如说人的姓名,年龄,性别元组类型(Tuple):   1. 一般用来存储不可变的数据。   2. 在函数定义时可以通过 *args将变长的位置参数打包到元组中    3. 在调用函数时如果实际参数为元组, 可以通过 *元组 把元组拆包后作为实际参数传递给函数的形式参数。字典类型(Dict):    1. 一般用来存储一个事物的相关信息,该信息可以通过键来说明。 比如一个订单信息,一个员工信息,如果有多个订单信息或者员工信息, 再将多个信息放在列表中。    2. 在函数定义时可以通过 **kwargs将变长的关键字参数打包到字典中    3. 在调用函数时如果实际参数为字典, 可以通过 **字典 把字典中的键值对拆包后作为实际参数传递给函数的形式参数。集合类型(Set):   1. 存储唯一性强的数据。   2. 如果说需要将一些数据去重,就可以将所有数据添加到集合中,最终集合里面保存的数据都是唯一的'''

14. Python中列表(List)和元组(Tuple)的区别

        列表类型(List):使用[]定义的有序的数据集合

        元组类型(Tuple):使用()定义的数据集合,元素不能够修改, 如果元素的值是可变类型该值里面的内容是可以被修改的。

        列表和元组之间可以相互转化:通过list(元组)将元组转换为列表,通过tuple(列表)将列表转换为元组,元组只有一个元素时后面的,是不可以省略的。例如:(10,) ("jqdcc",)

#  列举列表常见的操作:'''添加:1. 追加到尾部:list.append(obj)2. 插入到指定qjdxwz位置:list.insert(index, obj)3. 扩展:list.extend(seq)4. 通过qjdxwz添加:list[len(list)] = obj 在列表的最大qjdxwz处添加一个新的元素删除:1. 删除元素:list.remove(obj)2. 删除指定qjdxwz元素:value = list.pop([index=-1]) 3.根据qjdxwz删除元素:del list[qjdxwz]查询:1. 查询元素:value = list[qjdxwz]2. 长度:length = len(list)3. 根据qjdxwz删除元素:del list[qjdxwz]4. 遍历:for value in list 或者 while 的语法结构切片:1. 语法:list[开始:结束:步长]2. 开始和结束都可以是双向qjdxwz: 正qjdxwz是从左向右 0 1 2 3, 负qjdxwz是从右向左 -1 -2 -33. 规则: 切取方向和步长方向一致才能够切出来3.3.  应用场景:很多'''

15. *args和**kwargs的区别?

*args 用来将参数打包成tuple给函数体调用 def args_test(x, y, *args):  print(x, y, args)args_test(1,2,3,4,5)1 2 (3, 4, 5) **kwargs 打包关键字参数成dict给函数体调用 def kwargs_test(**kwargs):  print(kwargs)kwargs_test(a=1, b=2, c=3){'a': 1, 'c': 3, 'b': 2}

注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

16. python类中的实例方法、类方法、静态方法区别?

        普通实例方法: 第一个参数必须要默认传实例对象self,它表示一个具体的实例本身;实例方法只能被实例对象调用;

        staticmethod静态方法:那么就可以无视这个self,而将这个方法当成一个普通的函数使用,可以被类或类的实例对象调用;参数没有要求。

        classmethod类方法:它的第一个参数不是self,是cls,它表示这个类本身;可以被类或类的实例对象调用;第一个参数必须要默认传类,一般习惯用cls。

17. 什么是ORM?为什么要用ORM?不用ORM会带来什么影响?

ORM框架可以将类和数据表进行对应,只需要通过类和对象就可以对数据表进行操作。

通过类和对象操作对应的数据表,类的静态属性名和数据表的字段名一一对应,不需要写 SQL 语句。

ORM另外一个作用,是根据设计的类生成数据库中的表。

参考:https://www.cnblogs.com/wanglle/p/12984684.html

https://blog.csdn.net/u011466469/article/details/108482272

https://blog.csdn.net/qq_34671951/article/details/88683456

About Me:小麦粒

● 本文作者:小麦粒,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 个人微信号:pythonbao 联系我加微信群

●个人 QQ:87605025

● QQ交流群pythonbao :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

欢迎赞赏哦!有您的支持,小麦粒一定会越来越好!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。