哔哩哔哩面试题

说出python有哪几种内置函数

len()
range()
list()
tuple()
str()
int()
float()
dict()
bool()
set()
id()
min()
max()
sum()
isinstance()
next()
open()
print()
super()
type()
zip()
hasattr()
getattr()
setattr()
delatter()
eval()
zip()

a=1,b=2 让a b互换

a = 1
b = 2
a, b = b, a
print(a)
print(b)

断言有哪几种类型

unittest断言

需要继承unittest.TestCase
使用self调用断言

常用断言

断言方法检查条件
assertEquala == b
assertNotEquala != b
assertTruebool(x) is True
assertFalsebool(x) is False
assertIsa is b
assertIsNota is not b
assertIsNonex is None
assertIsNotNonex is not None
assertIna in b
assertNotIna not in b
assertlsInstanceisinstance(a, b)
assertNotIsInstancenot isinstance(a, b)

用于完成某种特定检查的断言方法

断言方法检查条件
assertAlmostEqual(a, b)round(a-b, 7) == 0
assertNotAlmostEqual(a, b)round(a-b, 7) != 0
assertGreater(a, b)a > b
assertGreaterEqual(a, b)a >= b
assertLess(a, b)a < b
assertLessEqual(a, b)a <= b
assertRegex(s, r)r.search(s)
assertNotRegex(s, r)not r.search(s)
assertCountEqual(a, b)a、b 两个序列包含的元素相同,不管元素出现的顺序如何

pytest断言

使用assert进行断言

# 表达式true通过断言,false断言失败
assert  条件表达式  断言失败message

assert可以使用直接使用“==”、“!=”、“<”、“>”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于
assert 可以直接使用 in 和not in 来比较包含与不包含。
通过assert不需要任何辅助符号,直接判断对象是否为ture,而assert not 用于判断是否为false。

assert xx  判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b

python字典中的值是否可以为空

不可以

test_dict = {"name":
}报错 SyntaxError: invalid syntax

针对一个登陆系统从多方面设计测试用例

自动化相关问题selenium

一些性能测试问题jmeter相关

数据库操作增删改查,表联查

以下代码会报错吗,为什么?

例子1

class C():@def B():print("B")def A():print("A")C.B()不会报错
输出B

个人理解:
类和对象都可以调用,类似静态方法
可能在编译的过程中,判断是类还是对象,如果是对象,就会检查是否有self参数接收,如果是类,没有加@classmethod就当做静态方法处理。

例子2

l1 = [1, 2, 3, 4]
print(l1[8100])输出[]
不会报错

个人理解:
如果是访问具体某个值会报错,索引越界
如果是切片的话,内部会判断开始和结束位置以及步长

  1. 判断开始和结束是否小于0
  2. 判断开始和结束不在合法范围,则返回空列表
  3. 如果开始位置合法,结束位置不合法,进行裁剪
def get_slice(a, beg, end, delta=1):# 数组切片get方式if delta == 0: raise ValueError("slice step cannot be 0")# 将负数下标转化一下if beg < 0: beg += len(a)if end < 0: end += len(a)# 如果转化完成之后依然不在合法范围内,则返回空列表if beg < 0 and end < 0 or beg >= len(a) and end >= len(a): return []# 如果方向不同,则返回空列表if (end - beg) * delta <= 0: return []# 将越界的部分进行裁剪beg = max(0, min(beg, len(a) - 1))end = max(-1, min(end, len(a)))ans = []i = begwhile between(beg, end, i):ans.append(a[i])i += deltareturn ans

super()的作用

继承的关系中,解决子类调用父类方法或属性的问题
按照MRO(Method Resolution Order):方法解析顺序 进行的

class Base:def __init__(self):print('Base.__init__')			class A(Base):def __init__(self):super().__init__()		# 2 重点 此处调用B的__init__,根据__mro__中继承顺序print('A.__init__')class B(Base):def __init__(self):super().__init__()		# 3 此处调用Base的__init__,根据__mro__中继承顺序print('B.__init__')class C(A, B):def __init__(self):super().__init__()		# 1 此处调用A的__init__print('C.__init__')C()输出内容
Base.__init__
B.__init__
A.__init__
C.__init__

理解
当调用super()的时候,会从当前类中__mro__中获取继承类的顺序去执行。

线程与进程之间的区别

  1. 根本区别:进程是操作系统资源分配的基本单位,而线程是CPU任务调度和执行的基本单位
  2. 开销方面:创建或切换一个线程比创建一个进程开销小,占用资源和效率都比进程小,进程资源独立,同一个进程下线程共享资源
  3. 所处环境:在操作系统中能同时运行多个进程(程序),在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
  4. 包含关系:线程是进程的一部分,一个进程可以包含多个线程,一个进程至少包含一个主线程。

如何在数据库数量大的情况下,优化查询效率(亿级别)

get和post的区别

为什么post请求可以代替put,delete,update之类的请求

用过哪些抓包工具进行抓包

如何启动selenium ORC

除了requests。还有哪些库可以做http请求

http协议有哪些

单个api测试方法

脚本的项目结构

如果存放数据

api业务流程测试用例设计


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部