python面试题

python面试题

文章目录

一个变量没有定义报什么错误

  1. NameError:name "a" is not defined
    

列表与元组的区别

  1. 列表的声明用中括号元组的声明用小括号,并且元组只有一个元素的时候,需要在后面加逗号
  2. 列表可以修改,元组不可以修改,列表就相当于一个动态数组,而元组是一个 静态数组
  3. 从设计上说,列表是用来保存多个相互独立对象的数据集合,而元组设计的初 衷就是为了描述一个不会改变的事物的多个属性。

python 序列有哪些,有什么特点?

  1. 有序:String,List,Tuple
  2. 无序:Set,Dictionary
  3. 序列特点:
    1. 都可以通过索引得到每一个元素
    2. 默认索引值从0开始
    3. 都可以通过切片的方法得到一个范围内元素的集合
    4. 有很多共同的操作符

Python 区分大小写吗?

  1. 区分

如何获取字典中的所有键?

  1. 我们可以直接遍历这个字典,用 keys()函数取出所有的键

  2. dic={"name":"jjj","age":18}
    for i  in dic.keys():
      print(i)
    
  3. 如果说要取出字典中所有的键和对应的值,我们用 items0 函数

  4. for key,value in dict.items()
    

列表和字典有什么区别?

  1. dict 生成慢,查找快,list 生成快,查找慢,
  2. list 通过索引访问,dict 使用 key 访问,
  3. list是有序的,dictionary是无序的
  4. list可以切片,字典不能切片

截取字符串里面部分字符怎么做?

1. str=("ssds,ds")
2. s=str[2::2]直接截取
3. str.split(",",1)

如何遍历列表,字典?

  1. lista=[1,2,3,4,5,6]
    dic={"name":"sss","age":18}
    for i in lista:
       print(i)
    for i in range(0,len(lista))
           print(list[i])
    
    for key in dic.keys():
           print(dic[key])
    for value in dic.values():
           print(value)
    for key,value in doc.items():
           print(key,value)
    

列出 5 个 python 标准库?

  1. os:提供了不少与操作系统相关联的函数
  2. sys:通常用于命令行参数
  3. re: 正则匹配
  4. math: 数学运算
  5. datetime: 处理日期时间
  6. requests
  7. jsonpath
  8. openpyxl

字典如何删除键和合并两个字典?

1. dic={"name":"sss","age":18}
2. dic1={"q":"1}
3. dic.pop("name")/del dic["name"]
4. dic.update(dic1)

python 实现列表去重的方法?

  1. lista=[1,2,3,4,5,6,5,4]
    seta=set(lista)
    lista=list(seta)
    print(lista)
    集合(Set)是Python中用于存储无序且不重复元素的容器。通过将列表转换为集合,可以自动去除列表中的重复元素。
    
  2. my_list = [1, 2, 3, 4, 3, 2, 1]
    my_dict = {}.fromkeys(my_list)
    my_list = list(my_dict.keys())
    print(my_list)
    
    在对列表去重时,我们可以将列表中的元素作为字典的键,并给每个键分配一个任意值。由于字典中的键是唯一的,重复的元素将自动被去除。
    

python 内建数据类型有哪些?

  1. 整型 – int
  2. 布尔型 – bool
  3. 字符串 – str
  4. 列表 – list
  5. 元组 – tuple
  6. 字典 – dict

列出 python 中可变数据类型和不可变数据类型,并简述原理?

  1. 可变数据类型:列表 list 和字典 dict
  2. 不可变数据类型:整型 int、浮点型 float、字符串型 string 和元组 tuple
  3. python 中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值, 相当于是新建了一个对象,而对于相同的值的对象, 在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个 对象;可变数据类型,允许变量的值发生变化,即如果对变量进行 append、+=等 这种操作后, 只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化, 不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有 自己的地址, 相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的 对象。

如何将字符串转换为小写?

1. str={AAAA}
2. str.lower()

现场出了一个 100-10000 之间,打印出各位数字相加能被 15 整除的整 数,每行打印十个?

  1. def num(a, b):
        sum = 0
        for i in range(a, b):
            if i % 15 == 0:
                sum += 1
                print(i, ",", end="")
                if sum % 10 == 0:
                    print()
    
    
    num1 = num(100, 10000)
    print(num1)
    
    

然后现场出了一个 Python 题目 1689 年到 2019 年打印出所有的闰年 ?

  1. def num(a, b):
        for i in range(a, b):
            if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
                print(i)
    
    
    num(1689, 2019)
    
    

打印九九乘法表 ?

  1. for i in range(1,10):
      for j in range(1,i+1):
       print("{}*{}={}\t".format(j,i,j*i))
    
    print("\n")
    

冒泡排序 ?

  1. def bubble_sort(arr):
        n = len(arr)
        for i in range(7):#0,1,2,3,4,5,6
            for j in range(7-i-1):
                print(j,'.')
                if arr[j] > arr[j+1]:
                    arr[j], arr[j+1] = arr[j+1], arr[j]
        return arr
    
    arr = [5, 69, 12, 1, 66, 85, 21]
    print('待排序的数组为:', arr)
    print('从小到大排序后结果为:', bubble_sort(arr))
    

写一个程序进行货币间币值转换函数?

while 1:
    in_num = input("请选择:1.美元转换为人民币\n2.人民币转换为美元\n3.结束\n")

    try:
        choose_data = int(in_num)
    except:
        print("只能输入1,2,3,请注意")
    else:
        if choose_data == 1:
            try:
                in_num = int(input("请输入你的美元值"))
            except:
                print("请输入数字")
            else:
                now_amer = in_num * 7.1926
                print("{}美元转换为人民币{}".format(in_num, now_amer))
                continue

        elif choose_data == 2:
            try:
                in_num1 = int(input("请输入你的美元值"))
            except:
             while 1:
    in_num = input("请选择:1.美元转换为人民币\n2.人民币转换为美元\n3.结束\n")

    try:
        choose_data = int(in_num)
    except:
        print("只能输入1,2,3,请注意")
    else:
        if choose_data == 1:
            try:
                fl_num = float(input("请输入你的美元值"))
            except:
                print("请输入数字")
            else:
                now_amer = fl_num * 7.1926
                print("{}美元转换为人民币{}".format(fl_num, now_amer))
                continue

        elif choose_data == 2:
            try:
                fl_num1 = float(input("请输入你的美元值"))
            except:
                print("请输入数字")
            else:
                now_amer1 = fl_num1 % 7.1926
                print("{}人民币转换为了美元{}".format(fl_num1, now_amer1))
                continue


        elif choose_data == 3:
            print("程序结束")
            break
        else:
            print("输入的有错误,重试")
            continue


        elif choose_data == 3:
            print("程序结束")
            break
        else:
            print("输入的有错误,重试")
            continue

回文数 ?

num = input('Num:')
if num == num[::-1]:
    print("回文数")
else:
    print("不是")

python 中生成随机整数、随机小数、0-1 之间小数方法?

import random
print(random.randint(1,100))#随机1-100之间的数字
print(random.random())#随机生成小数
rd=random.uniform(0.1,0.5)#随机生成0.1到0.5之间的小数
print(rd)

fixture 装饰器的作用与默认值?

如何进行异常处理?

  1.  try:
            执行脚本代码
     except:
            出现异常会出现的代码
     else: 
            没有异常会执行的代码
     finally:
            无论什么情况都会执行的代码
    

类的继承与多态意思?

  1. 子类继承父类所有的方法
  2. 父类不能继承子类
  3. 子类再去修改父类里面的方法,子类都是新的方法(多态)

json 与字典的区别?

区别总结:

  1. 定义上:字典是一种数据结构; json 是一种数据的表现形式,一种数据格式。
  2. 写法上:字典中的键 key,只要是 hashable 的数据类型即可;但是 json 的键 key(属性名称),必须是用双引号引起来的字符串。

白盒测试怎么测?

  1. 语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
  2. 判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。
  3. 条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支。
  4. 判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。
  5. 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。
  6. 路径覆盖:是每条可能执行到的路径至少执行一次。

一行代码实现1-100之间的和

利用sum()函数求和
sum=sum(range(1,101))
print(sum)
5050

10个linux常用命令

ls pwd cd touch rm mkdir tree cp mv cat more grep echo

[1,2,3]+[4,5,6]的结果是多少?

两个列表相加,等价于extend[1,2,3,4,5,6]

list[2,3,5,4,9,6]从小到大排列

lista=[2,3,5,4,9,6]
lista.sort()
print(lista)

如何搭建 python+ requests 接口测试环境

  • 安装pycharm
  • 安装python运行环境
  • 安装requests包
  • pycharm导入requests包

requests 如果做 get 请求,数据保存格式哪二种

  • 保存在url里面键值对方式发送请求
  • 保存在参数params里面

requests 如何做 post 请求接口

import requests
url = "http://47.95.118.117/fanwe/indexphp?ctl=user&act=doregister"
data={‘user name’:’cxy0o3’,
‘mobile’:’18312345676,
‘user_pwd’:’cxy1234561’,
‘user_pwd confirm’:'cxy123456',
‘agreement’:’1,
‘commit’:’注册’}
r=requests.post(url=url,data= data)
print(r.text)

requests 上传文件接口如何测试

有没有做过 https 接口,具体怎么做

requests 中如何测试 json 数据的接口

requests 中如何添加 cookies

  1. 定义参数为 cookies,用字典保存 在请求过程中添加 cookies 值 requests.post(url=url,data=data,headers=headers,cookies=cookies)

requests 中如何添加 headers 信息

  1. 定义参数为 headers,用字典保存 在请求过程中添加 headers 值 requests.post(urlurl,data= data,headers=headers,cookies=cookies)

requests 中 sign 签名与 token 如何处理

request 框架有哪些方法?

  • 像用来发送请求的一般都是调用以下方法
  - reponse=requests.get() 
  - reponse=requests.post()
  • 获取响应数据一般都是调用以下方法
  - reponse.status_code 
  - reponse.reason
  -  reponse.text 
  - reponse.json() 
  - reponse.headers 
  - reponse.cookies

接口自动化怎么测试

  • Python+ requests+pytest 版本

  • 原来我们接口自动化是用 python+ request+ pytest 执行
    接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联
    做接口自动化之前,我们也会划分模块,报告,公共的模块,测试数据,测试报
    告,主要的目的是为了方便后期的维护
    测试数据,一般原来我们就是用的接口测试用例,公共的模块,主要是里面的一
    些公共的作,比如说用例 excel 数据的读取
    数据库的连接,还有我们封装的每个接口请求
    断言的主要是获取访问接口的值判断,用的是 assert,参数化主要用的比较多是
    excel 表格,就是测试用例数据
    还有需要调用登录后的 cookies 跟 token 的时候,我们就会用到关联
    比如说原来我们写的一个申请借款的接口吧
    首先我们会编写测试用例,把每个用例数据保存到 excel 中
    再建立一个申请借款的模块
    这个时候我们去调用申请借款的功能模块,里面的参数我们是保存在 excel 表格
    中
    我们建立发送请求,通过参数化,去读写 excel 表格中的数据,获取到返回的数
    据,通过 assert 去对应返回的数据跟用例中异常的数据。
    这个时候也会做数据库断言,去连接数据库去查询数据库中时候存在查询,如果
    是返回结果
    是 json 数据格式,我们还会转化下格式后,再去断言
    这个申请借款模块,也会用到登录的 cookie 值 token,我们先建立一个登录的
    请求,提取
    返回的 cookie 值 token
    excel 表格多个用例,我们就用到循环去运行,读取 excel 中用例总的条数,去循
    环运行,
    这里要注意的是:
    就是 excel 表格数据时是 str 我们要 eval 转化成字典格式
    把每个接口封装好以后
    我们就会调用 pytest 框架去运行所有 test 文件的测试用例
    如果只是执行部分用例,也可以通过 pytest 框架来指定
    然后用 yagmail,在 pytest 框架运行完 test 文件之后,发送邮件到指定邮箱。
    接口自动化,我个人觉得,性价比是比较高的。
    实现起来简单、维护成本低,容易提高覆盖率等特点
    接口是稳定的,最多是增加一个字段或者新增接口之类的
    低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用
    例的扩充就可以了
    执行的快,反馈的速度快
    
  • jmeter 版本

    • 是用 jmeter
      请求去做的,这个时候,我们也用到一些工具,http 代理,主要方便编写接口请
      求,通过录制就行了,我觉得接口自动化只是在接囗测试中多加了一些参数化、
      关联、断言参数,主要是函数参数化,自定义变量参数化,文件参数化,主要文
      件类型 csv 跟 txt,不过原来 csv 文件用的比较多,还有一些数据库的参数化,断
      言,主要响应代码断言,响应文档断言。
      比方说,原来我们一个登录接口主要是正常场,异常场票这块,正常场景,主要
      是用户跟密码正确,采用数据参数化,把用户名用随机函数进行参数化,随机长
      度大一些,用户名不存在的情况,原来是通过文件参数化,设置参数值,密码不
      正确也是通过文件参数化,接口请求中 host 地址,目录地址,我们都进行数据
      化,自定义变量去操作,结果检中,我们主要是用断言来检查,每个请求,
      设置了 2 个断言,一个响应代码断言,一般是 200,响应文本断言,登录成功,
      返回码为 1
      状态提示成功,检意是否成功,对应异常场景也是,都需要设置断言,去检查结
      果原来做的申请借款接口,需要登录接口 http cookie,我需要建立 2 个接口,一
      个登录接口,一个申请借款接口,通过正则表达式去提取登录接口返回 cookie,
      在申请借款请求接口,设置 http cookie 时,值为登录接口返回 cookie,还有
      也要考虑原来我们项目,还有 token 值,提取登录返回 token,提取,当成申请
      借款的请求参数,当测试场景的脚本编写完成,执行接口测试用例,我们在察看
      结果树中,检直,主要是看颜色这块,红色检查哪些地方失败,绿色表示通过
      编写完成后,我们会把脚本添加到 jenkins 里面持续集成运行
      原来我们持续集成是半个月运行一次,当然我们也可以手动构建
      1,我们一般把写完的 jmeter 的脚本
      2,通过 svn 把写好的脚本检入到 svn 服务器
      3,在 jenkins 任务下,选择定时构建,或者手动构建,检查 svn 上传最新的脚
      本,去运行
      一般我们项目在修改新的功能模块,上线,转测之前,都会自动去运行脚本
      4,运行完成,我们再 jenkins 下,查看脚本运行结果
      

为什么做接口自动化?

  • 接口自动化,我个人觉得,性价比是比较高的
    实现起来简单,维护成本低,容易提高覆盖率等特点
    接口是稳定的,最多是增加一个字段或者新增接口之类的
    低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用
    例的扩充就
    可以了执行的快,反馈的速度快
    

你写了多少接口自动化用例

  • 自动化用例,也没有具体数过,当时我负责的所有模块的接口的自动用例都是我
    这边独立完成的,
    有模块的用例会多一点,有些会少一点,这具体看接口的参数有多少,参数多限
    制条件多的,
    一般用例会比较多一点,我负责的模块大概有 100 多条用例是有的
    

比如说你接口的请求参数需要加密处理的,你们用的是什么加密方式,你 加密怎么处理的?

这个是有做过的,就拿当我们那个项目的登录接口来讲吧,那个登录的密码是需
要进行加密
加密之后再进行传输。这里需要问开发要加密算法,我们会把它封装成一个函数,
调用这个加密函数对密码加密,之后再进行传递。我们公司的加密算法,大部分
用的都是 MD5 的加密算法(base64)

你查询出来返回结果是密文,密文你怎么测试

这里首先要搞清楚用的是什么加密算法,问开发要解密算法,对返回的数据进行
解密
解密完成之后在与预期结果对比,去进行断言

jmeter 如何进行参数化,参数化类型包含哪些

jmeter 中对于 json 数据如何提取信息

  • 正则表达式提取或者 JSON Extractor 提取

jmeter 中如何跨线程组传输参数

jmeter 如何进行断言

  • 响应断言 添加响应断言:添加-》断言-》响应断言

jmeter 如间在 cmd 命令下运行

- Jmeter -n -t 文件路径\fw-zhuce.jmx -l result.jtl -e -o E:\resultreport

pytest 如何做断言

  • 用 assert 断言
    • 1,断言返回的结果
    • 2,进行逻辑检查,检查数据库产生的数据
  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值