哔哩哔哩面试题
说出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调用断言
常用断言
| 断言方法 | 检查条件 |
|---|---|
| assertEqual | a == b |
| assertNotEqual | a != b |
| assertTrue | bool(x) is True |
| assertFalse | bool(x) is False |
| assertIs | a is b |
| assertIsNot | a is not b |
| assertIsNone | x is None |
| assertIsNotNone | x is not None |
| assertIn | a in b |
| assertNotIn | a not in b |
| assertlsInstance | isinstance(a, b) |
| assertNotIsInstance | not 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[8:100])输出[]
不会报错
个人理解:
如果是访问具体某个值会报错,索引越界
如果是切片的话,内部会判断开始和结束位置以及步长
- 判断开始和结束是否小于0
- 判断开始和结束不在合法范围,则返回空列表
- 如果开始位置合法,结束位置不合法,进行裁剪
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__中获取继承类的顺序去执行。
线程与进程之间的区别
- 根本区别:进程是操作系统资源分配的基本单位,而线程是CPU任务调度和执行的基本单位
- 开销方面:创建或切换一个线程比创建一个进程开销小,占用资源和效率都比进程小,进程资源独立,同一个进程下线程共享资源
- 所处环境:在操作系统中能同时运行多个进程(程序),在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
- 包含关系:线程是进程的一部分,一个进程可以包含多个线程,一个进程至少包含一个主线程。
如何在数据库数量大的情况下,优化查询效率(亿级别)
get和post的区别
为什么post请求可以代替put,delete,update之类的请求
用过哪些抓包工具进行抓包
如何启动selenium ORC
除了requests。还有哪些库可以做http请求
http协议有哪些
单个api测试方法
脚本的项目结构
如果存放数据
api业务流程测试用例设计
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
