1. pytest 中为什么print()看不到例如def test_get_my_applications(): applications query_my_applications(employee_zhao) for i in applications: print(i)pytest 默认会捕获标准输出所以测试成功时print()的内容不一定直接显示。命令行可以使用python -m pytest -s其中-s ↓ 关闭 pytest 的输出捕获 ↓ print() 可以直接显示不过 VS Code 的 Testing 功能有自己的 pytest 启动方式全局修改python.testing.pytestArgs可能影响测试发现因此当前项目不采用这种方案。2. 更正规的方式使用loggingPython 自带logging标准库不需要 pip 安装import logging创建 loggerlogger logging.getLogger(__name__)使用logger.debug(调试信息)logger.info(普通信息)logger.warning(警告信息)logger.error(错误信息)和 Java 很相似Java Python --------------------------------------------- log.info(...) → logger.info(...) log.debug(...) → logger.debug(...) log.warn(...) → logger.warning(...) log.error(...) → logger.error(...)3. Python logging 的占位符Java SLF4J 经常这样写log.info(查询结果: {}, result);Pythonlogging不使用这种{}占位符。应该logger.info(查询结果: %s, result)例如employee_id employee_zhaologger.info(员工ID: %s, employee_id)也可以使用 f-stringlogger.info(f员工ID: {employee_id})不过日志中更推荐logger.info(员工ID: %s, employee_id)4. 为什么logger.info()一开始也看不到pytest 同样会处理日志而且INFO日志不一定默认实时显示。因此在项目根目录创建智能办公/ │ ├── pytest.ini ├── app/ ├── tests/ ├── main.py └── .envpytest.ini[pytest] log_cli true log_cli_level INFO含义log_cli true ↓ 测试过程中实时显示日志 log_cli_level INFO ↓ 显示 INFO 及以上级别的日志因此logger.info(查询结果: %s, result)就能在 VS Code 的 pytest 测试输出中看到。