跳转至

Formula

python

循环控制

  • continue: 跳过本次迭代,进入下一次
  • break: 跳出当前最近一层循环
  • return: 如果循环在函数里,它会结束整个函数,从而也结束循环
  • raise: 抛出异常,中断当前流程,循环也会结束
  • assert: 断言失败时抛 AssertionError,本质也是异常
  • sys.exit(): 让整个 Python 程序/进程终止,并把退出码传给操作系统、shell、调度器或父进程。
  • exit() / quit(): 交互式解释器里的辅助对象,也不是关键词,不建议在正式代码里用

语法糖

语法糖: 让代码写起来更爽、读起来更优雅的简化写法,没有改变底层逻辑。

语法糖 示例 本质 项目常见用途 注意事项
推导式 / 生成器表达式 [u.name for u in users if u.active]{u.id: u for u in users}sum(i.price for i in items) 循环 + append / yield 数据清洗、过滤、字段提取、列表转字典、求和 复杂推导式拆成循环;生成器省内存
装饰器 @retry(times=3)@timer@lru_cache(maxsize=128)@app.get("/users") f = decorator(f) 路由、重试、耗时统计、日志、权限、缓存 自定义装饰器加 functools.wraps
with 上下文管理器 with open(path) as f:with lock:with db.transaction(): try/finally + __enter__/__exit__ 文件、DB 事务、线程锁、临时目录、HTTP Session 可自定义上下文管理器
f-string f"user_id={user_id}, cost={cost:.2f}ms" 字符串格式化 日志、异常信息、调试输出 拼 SQL 不要直接拼用户输入,用参数化
解包 / 星号 a, b = b, afirst, *rest = linesUser(**payload){**default_config, **user_config} 序列解包、可变参数、字典展开 多返回值、合并配置、动态传参 参数过多影响可读性
条件表达式 / 链式比较 status = "ok" if resp.ok else "fail"if 0 <= index < len(items): 表达式分支 / 比较展开 默认值、状态赋值、范围判断 嵌套三元表达式可读性差
海象运算符 := while chunk := f.read(8192):if m := re.match(pattern, text): 赋值表达式 边读边判断、正则匹配后直接使用 别滥用,过度使用降低可读性
async / await async def fetch():await resp.json()async with 协程 / 事件循环语法糖 异步爬虫、FastAPI 异步接口、并发 IO 不要在 async 中调用阻塞 IO
@property / @classmethod / @staticmethod @property def full_name@classmethod@staticmethod 描述符 / 绑定方法 ORM 计算属性、类方法、工具方法 property 别写重逻辑
字典合并 \| config = base_config \| override_config dict 合并 配置合并 Python 3.9+
match / case match command: case "start": ... 结构化模式匹配 解析命令、协议消息、状态分支 Python 3.10+,不必替代所有 if

面向对象

Python类的主要特性

http

Method

Q: 常见的HTTP请求格式有什么?GET和POST它们的功能点区别又有什么?

请求方法、url、请求头、请求体

方法 作用
GET 获取资源,查询
POST 提交数据,通常用于新增
PUT 整体更新/替换资源
PATCH 部分更新资源
DELETE 删除资源
HEAD 只获取响应头
OPTIONS 查询支持的方法,CORS 预检
TRACE 回显请求,诊断用,少用
CONNECT 建立隧道,常用于 HTTPS 代理

常见请求体数据格式 Content-Type:

  • application/json
  • application/x-www-form-urlencoded
  • multipart/form-data,文件上传
  • text/plain
  • application/xml / text/xml

📌 GET与POST请求

1.参数传递方式

  • GET: 参数通过URL的查询字符串传递(key=value形式),数据直接暴露在地址栏中。
  • POST: 参数通过HTTP请求体传递,数据隐藏在请求体中,格式灵活(如JSON、表单数据),支持二进制数据上传(如文件)。

2.数据长度限制

  • GET: 受浏览器和服务器限制,URL长度通常不超过2048字符(约2KB),超出部分可能被截断。
  • POST: 数据长度理论上无限制,但服务器可能根据配置限制请求体大小,适合传输大量数据或文件。

3.安全性与幂等

  • GET: 数据通过URL暴露,可以被截获;具有幂等性,即多次执行相同的请求结果相同。
  • POST: 参数隐藏在请求体中,安全性相对get方式较高,但HTTP协议本身为明文传输,需结合HTTPS实现加密。

4.应用场景

  • GET: 获取资源(如加载网页、查询商品列表)、数据量小且无需保密的场景(如分页参数)。
  • POST: 提交表单、上传文件或复杂数据结构(如JSON数组)、执行敏感操作(如支付、删除数据)。

5.缓存

  • GET: 可被浏览器/代理缓存
  • POST: 默认不缓存

测试

功能测试&接口测试

Q: 登录功能和登录接口在测试设计时的区别

  • 登录功能测试,通常指从用户视角测完整的登录业务流程,更偏用户场景和体验。
  • 登录接口测试,通常指绕过 UI,直接对登录 HTTP 接口/后端服务做测试,更偏服务逻辑、协议、安全和性能。

接口测试可以更早介入、更细、更快,但不能替代功能测试;功能测试通过也不代表接口健壮。

两者是互补关系,设计时一个从“用户怎么用”出发,一个从“接口怎么调、后端怎么处理”出发。

登录功能测试设计

偏黑盒、端到端、用户体验,设计依据是需求、原型、用户场景。

关注点包括:

  • 页面元素: 输入框、密码掩码、验证码、登录按钮、忘记密码、记住我、第三方登录。
  • 正常场景: 账号密码正确,跳转首页,token/session 生效。
  • 异常场景: 账号不存在、密码错误、验证码错误、账号锁定、网络异常。
  • 交互体验: 回车登录、Tab 键、错误提示文案、按钮防重复点击、加载状态。
  • 兼容性: 浏览器、分辨率、移动端、键盘、自动填充。
  • 安全体验: 密码是否明文、退出后回退是否还能进、多端互踢提示。
  • 性能感受: 登录耗时、弱网表现。

用例设计常用: 场景法、等价类、边界值、状态迁移、UI检查

登录接口测试设计

偏后端、协议、数据、逻辑,设计依据是接口文档、数据模型、协议规范。

关注点包括:

  • 接口契约: URL、Method、Content-Type、请求头、请求参数、响应结构。
  • 参数校验: 必填、类型、长度、边界、空值、特殊字符、多余字段。
  • 业务逻辑: 账号密码正确/错误、账号不存在、锁定、验证码、token 生成。
  • 协议层: HTTP 状态码、业务错误码、响应字段、Cookie/Set-Cookie。
  • 安全: SQL 注入、XSS、暴力破解、限流、验证码重放、密码传输加密、token 越权。
  • 性能: 并发登录、QPS、响应时间、错误率、资源占用。
  • 依赖与 mock: DB、Redis、第三方登录、短信服务。
  • 自动化: 数据驱动、断言响应体/DB/缓存/日志。

用例设计常用: 参数组合、边界值、异常注入、契约测试、安全用例、性能场景

用例设计

Q: 针对移动端的微信中的聊天功能,你会从哪些维度来设计测试用例?

维度 核心测试点 记忆
1. 功能 消息类型、收发、状态、操作、会话、群聊 按消息生命周期全覆盖,核心是不丢、不重、不乱序
2. UI/交互 键盘、输入框、长按菜单、动画、暗黑、横竖屏、字体 看得见、点得动、反馈清楚
3. 兼容性 iOS/Android/鸿蒙、机型、分辨率、折叠屏、微信版本、多语言时区 多系统、多机型、多版本都跑通
4. 网络 Wi-Fi/4G/5G、弱网、无网、飞行模式、切换、丢包、重连、离线拉取 弱网切换不丢消息
5. 性能 大群高频、大文件、长视频、历史加载、CPU、内存、耗电、流量、卡顿 压力下仍流畅稳定
6. 安全与隐私 加密、本地存储、多设备登录、退出、权限、黑名单、举报、敏感词、防诈骗 不泄露、可管控、防风险
7. 异常与中断 来电、短信、闹钟、低电量、锁屏、切后台、杀进程、崩溃恢复、草稿 中断后能恢复
8. 多端同步与一致性 手机/PC/iPad/网页;消息、未读、撤回、删除、草稿、置顶、免打扰同步 多端一致,不丢不重不乱序
9. 通知 前台/后台、免打扰、声音震动、通知栏回复、点击跳转、聚合、延迟丢失 通知触达,且不打扰
10. 权限与系统集成 相机、相册、麦克风、位置、通知、后台刷新、电池优化、分享、剪贴板 系统权限和分享打通
11. 易用性/可访问性/国际化 无障碍、字体放大、语音播报、色弱、左手模式、多语言、RTL、时区 人人可用,跨地区可用
12. 升级/回归/稳定性 微信升级、系统升级、数据迁移、旧版兼容、灰度、长时间运行、反复切换 升级不坏,长稳可靠

优先级: P0: 功能、网络、异常、多端同步;
P1: 兼容、性能、通知、权限;
P2: UI、易用性、升级回归。