python自动化测试面试题,25K入职字节测试岗

news2024/11/26 12:52:12

问: http 和 https的区别
  答:

    1. https需要申请ssl证书,
    2. https是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
    3. http和https使用的是不同的链接方式,用的端口也不一样,前者是80后者是443

问: cookie 和session的区别

  答: cookie就是在客户端访问服务器的时候,服务器会生成一份cookie传给客户端,客户端会把cookie保存起来,以后客户端每次访问服务的时候,都会带上cookie

    session 是针对一个用户的,只有客户,程序就会为这个客户生成一个session,访问结束时 session结束

自动化测试面试技巧:20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了_哔哩哔哩_bilibili20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了共计6条视频,包括:1.为何企业天天在招人,天天在面试,天天有人入职,那个人却不是你有片头、2.为何面试官的提问你都对答如流就是拿不到offer、3.为何你的技术能力如此全面到了面试的时候却哑口无言等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17z4y1z71e/?spm_id_from=333.999.0.0

 

问: http的get请求和post请求的区别?

  答:

    1. get请求是将参数放到url中的,用?分割url和参数,&表示多个参数,post请求是将参数放到body中的
    2. get请求数据最多1024字节,而post没有上线

问: 列表与元组的区别

  答: 列表可变,元组不可变

问: 什么是可变、不可变类型

  答: 可变是指内存中的值可以改变,不可变的指的是内存中的值不可改变,不可变的有数值,字符串,元组;可变的有:列表,字典

问: 存入字典中有没有排序

  答: 没有排序,可以使用sort函数对字典进行排序

问: if 和 == 的区别

  答: is 判断的是 a  对象是否就是 b 对象,通过id来判断

    == 是判断 a 对象的值 与 b对象的值是否相等, 通过 value来判断

问: 谈谈你对面向对象的理解

  答: 面向对象三大特征

    1. 封装: 类中包含数据和方法
    2. 继承:子类继承父类,子类可以使用父类中的 属性和方法
    3. 多态:一个类被多个子类继承,每个子类对父类的方法做了不同的实现

问: 解释一下python的继承

  答: 当一个类继承了另一个类,这个类可以称之为子类,子类可以使用父类中的属性和方法,这样能够减少代码的重复,便于维护

     python支持以下种类的继承:
        单继承: 一个类继承另一个类

        多继承:一个类继承多个基类

        多级继承: 一个类继承单个基类,后者可以继承另一个基类

        分层继承: 多个类继承单个类

        混合继承: 两种或多种类型继承的混合

问: __init__ 有什么作用

  答: init在创建对象后,对对象进行初始化 

问: python里面如何生成随机数

  答: python生成随机数,需要先导入random模块, random.randint(1, 100) 随机生成1 - 100之间的数字

问:模块和包是什么
  答: 简单来说 form xxxxxx 就是包; impot xxxx就是模块,模块可以是类和方法

问: *args 和**kwargs的含义

  答:当我们不知道函数传递多少参数时,我们可以使用 *args进行参数传递;当我们不知道该传递多少关键字参数时,可使用**kwargs来收集关键字参数

问: python的特征

  答: 简单、易学、免费、开源、解释性,面向对象、提供了丰富的库

问: 什么是解释性

  答: 计算机不能直接理解高级语言,只能最直接理解机器语言,所以需要把高级语言转换为机器语言计算机才能执行高级语言编写的程序,python解释器把源代码转换为字节码的中间形式,然后再把它翻译成机器语言

问: 什么是负索引?

  答: 负索引与正索引不同,它是从右往左开始检索的

list = [1,2,3,4,5,6,7]
print(list[-3])# 输出结果为 5
print(list[-3:-1])# 输出结果为[5,6]

问:解释Python中的join()和split()函数

  答: Join()能让我们在指定字符添加到字符串

    split()能让我们用指定字符分割字符串

问: 怎么移除字符串中的空格

  答: 去除前空格可以使用lstrip(),去除rstrip可以使用rstrip(),去除前后空格可以使用strip()

问: 如何字符串大小写转换
  答:转小写 "ABCDEFG".lower()

    转大写"abcdefg".upper()

    使用isupper检查是否为全大写,islower检查是否为全小写

问: 如何获取字典中的key或value

  答:mydict.values()  # 获取字典中所有的values

    mydict.key()  # 获取字典中所有的key

问: 接口自动化中,调用接口时,需要使用token怎么处理

  答: 可以将 登录接口封装为前置条件,在执行接口时调用登录接口获取token,在对token格式进行处理,key叫authorization,value 叫 bearer 后面拼接上获取到的tonken,对处理好的格式导入headers中

url = "https://xxxxxxxxxxxx"
data = {"username": "用户名", "password": "密码"}
response = HTTPHandler().visit("post", url, json=data) #这边将request做了封装
token = {
    "authorization": "Bearer" + " " + response
}
print(response)
stock_url = "https://xxxxxxxx"
stock_data = {"sourceItems": [{"sku": "xxxxxxxx", "source_code": "xxxxx", "quantity": "xxxxx", "status": "xxxxx"}]}
stock = HTTPHandler().visit("post", url=stock_url, json=stock_data, headers=token)
print(stock)

问:字段如何取值和赋值

  答: 赋值: mydict['e'] = '5' # 输出结果为{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5'}

     取值: print(mydict[b]) # 输出结果为 2

mydict = {"a": "1", "b": "2", "c": "3", "d": "4"}
print(mydict.values())

问: python如何去重排序

  答: 可以先使用set方法去重,在转换为list,最后.sort进行排序

自动化测试面试技巧:

20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了_哔哩哔哩_bilibili20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了共计6条视频,包括:1.为何企业天天在招人,天天在面试,天天有人入职,那个人却不是你有片头、2.为何面试官的提问你都对答如流就是拿不到offer、3.为何你的技术能力如此全面到了面试的时候却哑口无言等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17z4y1z71e/?spm_id_from=333.999.0.0

 

问: sort和sorted有什么区别

  答: sort应用在list方法上,修改了原列表内容 sorted可以对所有可迭代的对象进行排序,返回一个新的列表,不会对原数据改变

str = set("aabbcccde")
print(str) # 输出结果为 {'b', 'e', 'a', 'c', 'd'}
# l1 = list(str)
# l1.sort()
# print(l1) # 输出结果为  ['a', 'b', 'c', 'd', 'e']
s1 = sorted(str)
print(str) # 输出结果为 {'b', 'e', 'a', 'c', 'd'}
print(s1) # 输出结果为 ['a', 'b', 'c', 'd', 'e']

问:为什么做自动化、什么项目适合做自动化测试

    1. 需求稳定、不会频繁变动
    2. 研发周期长,需要频繁回归测试
    3. 需要在多平台上重复运行相同的测试场景
    4. 被测软件开发规范,保证系统的可测性
    5. 测试人员具备一定的编码能力

问:自动化使用的测试框架是什么?怎么做,简述自动化框架的设计、维护

   答:用的是python 语言,测试框架用的是 selenium, 接口调用 request, 数据管理用的是 excel、yaml,数据库交互用的是pymysql,日志处理用logging,测试报告用的是 allure; 持续集成用jenkins,

    在做web自动化的时候,我使用的是po模式,先将logging封装,再封装元素操作,加入logger、webdriverwait、元素操作失败时调用 save_screenshot(截图),这样每次操作元素的时候都可以打印出日志,失败的时候截图方便查错;在就是封装pymysql,以便执行数据库操作;还有封装request,造数据的时候或者做接口自动化的时候会用到;

问:什么是PO模式

  答:Page Object Model,PO模式最核心的思想就是分层,实现松耦合,实现脚本的重复使用,实现脚本的易维护性;

    PO模式主要分三层:

      1. 基础层BasePage: 封装一些基础的selenium原生Api,如元素操作
      2. PO层:元素定位、获取元素对象、页面动作
      3. 测试用例层: 业务逻辑、数据驱动

问:PO模式和非PO模式的优缺点

  非PO模式维护性差,如果前端元素做了修改,需要修改整个业务逻辑的代码,查找代码也很麻烦

  而使用PO模式,可提高代码的可读性、复用性、维护性

问:如何设计自动化测试用例

  答:手动测试用例肯定是不能直接用在自动化测试用例上的,设计用例时:

    1. 用例之间的不要产生关联
    2. 用例只验证一个功能点,不要试图验证多个功能点
    3. 用例上下文要有一定的顺序,前置条件明确
    4. 测试用例对数据的操作要进行还原
    5. 用例预计结果一定要正确

问:selenium有几种等待方法,他们有什么区别

  答: 有三种等待方法,1. 隐形等待 dirver.implicitly_wait();2、显性等待 webdriverwait)3、强制等待 time.sleep()

        1. 隐形等待全局设置一次就可以了,但页面上有的元素不一定可见,在会话开始的时候设置一次,之后所有的找元素都会调用隐形等待
        2. time.sleep() 就是强制等待,不管元素可不可见都会等到时间到
        3. 显性等待它的条件有很多:
          • 元素可见
          • 元素可用
          • 新窗口出现
          • url地址
          • 还可以设置每隔0.5s查看条件是否成立
          • WebDriverWait(self.driver,15,0.5).unit(EC.visibility_of_element_located(loc))
          • expected_conditions as EC 提供了很多期望发生的条件。

              常用的判断条件:

            • presence_of_element_locateed() : 元素存在
            • visbility_of_element_located(): 元素可见
            • element_to_be_clickable(): 元素可点击

      我在使用PO模式封装selenium原生Api的时候,就会加入显性等待

问: selenium中有哪些定位方式

  答: 有8种

    1. tag_name
    2. id
    3. name
    4. class_name
    5. css_selector
    6. link_text
    7. partial_link_text
    8. XPATH

问:弹框怎么处理

  答:

    1. 如果是div、蒙层这种弹框可直接定位,
    2. alert弹框需要用switch_to.alert进行处理,iframe也可以使用switch_to进行处理, accept() alert弹框确定,dismiss() alert弹框取消
    3. 浏览器打开的新窗口,先window_handles获取浏览区所有的句柄,switch_to.window(wins[-1]), 通过下标切换窗口

问: 下拉菜单如何选择

  答: 通过Select("元素").select_by_visble_text()通过select文本选择下拉菜单,还有通过 select_by_index(),select_by_value()

    如果不是select标签则使用元素点击的方法选择

问: 如何模拟浏览器的前进、后退、刷新

  答: driver.back() # 后退

    driver.forward()# 前进

    driver.refresh() # 刷新

问: WebDriver的close() he quit()的区别

  答: close是关闭当前页面,不会关闭进程;而quit是关闭当前浏览器,并且关闭进程

问: 如何安装 allure

$ pip install allure-pytest

问: super是干嘛用的?

  答: super用于继承父类的方法和属性

    举例: 在封装 logging时候,可以使用super初始化父类的属性

class FileHandler(logging.Logger):

    def __init__(self, name="root", level="DEBUG", log_file=None, format="%(filename)s:%(lineno)d:%(asctime)s %(name)s [%(levelname)s] :%(message)s", datefmt="%Y/%m/%d %H:%M:%S"):
        super().__init__(name)
        self.setLevel(level)

 json和字典的区别

  json:  独立于编程语言的文本格式来储存数据和表示数据;通常用于前后端数据交互

  dict:python存储数据格式

  区别:json{"key":"value"} - 双引号; dict{'key':'value'}- 单引号,json格式python是无法识别的,需要转换为 字典

  答: 首先pyhton的基础数据类型有: int、str、float、dict、list、bool、tuple、set这几种,没有json;

    json.dumps() 可将dict转换为 json

    json.load() 可将json转换为 字典

自动化测试面试技巧:

20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了_哔哩哔哩_bilibili20K入职字节跳动软件测试岗最快最有用的面试回答技巧,再不看就没有了共计6条视频,包括:1.为何企业天天在招人,天天在面试,天天有人入职,那个人却不是你有片头、2.为何面试官的提问你都对答如流就是拿不到offer、3.为何你的技术能力如此全面到了面试的时候却哑口无言等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17z4y1z71e/?spm_id_from=333.999.0.0

                                                                

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《深入理解计算机系统》读书笔记1

1.1信息就是位上下文 只由ASCLL字符构成的文件称为文本文件,所有其他文件都称为二进制文件。 系统中的所有的信息都由一串比特表示。区分不同数据对象的唯一方法是读到这些数据对象时的上下文。 1.2程序被其他程序翻译成不同的格式 预编译,编译&#xf…

【C++】类的访问权限

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中,类在设计时,可以把 属性 和 行为 放在不同的权限下加以…

智警杯赛前学习1.1---excel基本操作

修改默认设置 步骤一:打开“Excel选项”窗口,打开“文件”菜单,选择“选项”标签 步骤二:在“Excel选项”窗口中,选择“常规与保存”标签,在“常规与保存”标签中,可以修改录入数据时的默认字体…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[1]【Matlab代码#34】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 Logistic混沌映射种群初始化2.2 透镜成像折射反向学习策略2.3 动态因子2.4 黄金正弦策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xf…

国际标准 ISO 11898 解读

从 1993 第一个版 CAN 国际标准(ISO 11898:1993 和 ISO 11519-2)发布至今,ISO 11898 逐渐被分割整合成了相互独立的 6 个部分。分别以 Part 1 ~ Part 6 来标识。在旧版本(2003年之前)中 ISO 11898 是通信速度为 5kbps…

二维笛卡尔坐标系下的角的概念

文章目录 参考环境笛卡尔坐标系二维笛卡尔坐标系三维笛卡尔坐标系 任意角角的静态定义角的动态定义二维笛卡尔坐标系下角的概念方向正角、负角及零角 象限角象限象限角 终边相同角圆心角终边相同角 参考 项目描述搜索引擎Google 、Bing百度百科首页韩庆波正负角佟大大还是ETT【…

前端学习---Vue(6)路由

一、前端路由的概念和原理 Hash地址与组件的对应关系。 Hash:url中#之后的都是Hash地址 location.hash 1.1 前端路由的工作方式 ① 用户点击了页面上的路由链接 ② 导致了 URL 地址栏中的 Hash 值发生了变化 ③ 前端路由监听了到 Hash 地址的变化 ④ 前端路由把当前 Hash…

doris分区、join

动态分区和临时分区 动态分区 旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。只支持 Range 分区。原理 在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任…

tidyverse中filter行筛选时缺失值存在的一个坑

大家好,我是邓飞,好久没有更新博客了,是因为好久没有进步了。 之前我认为鲁迅说的对,他在《野草》中写道:“当我沉默着的时候,我觉得充实;我将开口,同时感到空虚”。现在确切的情况…

msvcr90.dll丢失的解决方法

在使用计算机的过程中,我们时常会遇到一些问题,比如应用程序无法正常启动,提示msvcr90.dll文件丢失,这个问题困扰了许多计算机用户。那么,怎么才能解决这个问题呢? 首先,让我们先了解一下msvcr…

c语言编程练习题:7-65 字符串替换

#include <stdio.h>int main() {char c;while (scanf("%c", &c) 1 && c ! \n) {if (c > A && c < Z) {c Z - (c - A);}printf("%c", c);}return 0; }代码来自&#xff1a;https://yunjinqi.top/article/190

Spring:spring-web中DeferredResult执行过程分析

对于HTTP请求的处理&#xff0c;有时处理请求的时间较长&#xff0c;可能会采用异步处理方式来处理。一般常用的异步处理方式是采用DeferredResult&#xff0c;本文会简单分析一下spring-web的整个处理过程。 首先&#xff0c;提供一个简单的DeferredResult例子&#xff1a; R…

C++map和set

目录&#xff1a; 什么是关联式容器&#xff1f;键值对树形结构的关联式容器 set的概念multiset的使用pair和make_pair map的概念用“[]”实现统计水果的次数 multimap的使用 什么是关联式容器&#xff1f; 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比…

Centos7 Failed to start login service 问题

最近发现Centos7有个问题&#xff0c;用普通用户登录的时候&#xff0c;打开命令窗口无法进行操作一直卡在那里&#xff0c;但切换到root用户后命令输入又正常。因为我需要从 window 上的 SecureCRT 去连接 Centos7&#xff0c;每次都需要用户登录&#xff0c;然后把防火墙关闭…

TLD7002学习笔记(一)-芯片介绍

文章目录 1. 前言2. TLD7002-16ES简介3. TLD7002-16ES基本功能介绍3.1 引脚和功能框图3.2 状态机3.2.1 正常工作时状态机3.2.2 OTP烧录或者仿真时的状态机 3.3 GPIN0和GPIN1引脚3.4 器件地址3.5 电流配置3.6 PWM配置3.7 并行输出&热降额&热过载保护 TLD7002-16ES诊断功…

高完整性系统:INTRODUCING ADA

目录 1. ADA的历史 2. ADA的特点 2.1 Strong, Static Typing 强语言、强静态类型语言 2.1.1 ADA is Strong, Static Typing 2.1.2 C is Weak, Static Typing 2.2 Module System 2.3 Portable 2.3.1 ADA 2.3.2 C 2.3.3 Cost of Runtime Checking 2.4 Readability …

Java jvm调优

系列文章目录 文章目录 系列文章目录前言JVM 基础面试题11. JDK&#xff0c;JRE以及JVM的关系2. 我们的编译器到底干了什么事&#xff1f;3. 类加载机制是什么&#xff1f;3.1 装载(Load)3.2 链接(Link)验证(Verify)准备(Prepare)解析(Resolve) 3.3 初始化(Initialize) 4. 类加…

chatgpt赋能python:Python三次幂与其应用

Python三次幂与其应用 Python是一种高级编程语言&#xff0c;因其简单易用的语法和广泛应用而备受欢迎。在该语言中&#xff0c;三次幂是其中一个常用操作之一。本文将介绍Python三次幂的概念及其应用&#xff0c;为您带来有价值的参考。 什么是Python三次幂&#xff1f; Py…

KubeSphere 社区双周报 | 杭州 Meetup 报名中 | 2023.05.12-05.25

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.05.12-2023.…

Linux - Java 8 入门安装与重装教程集锦

一、入门初始安装 1. 具体安装教程 1. linux 系统中如何安装java环境&#xff08;通过tar.gz文件&#xff09; 安装包下载链接 Java 的 tar.gz 安装包下载链接传送门 Linux 系统的 Java 环境变量配置教程 1. linux查看java版本&#xff0c;以及配置java home 2. Linux环…