You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytest-postgresql插入的测试行数据存储在什么位置?

pytest-postgresql 测试数据存储位置说明

核心原因

你看不到测试数据的根本原因是pytest-postgresql的postgresql_proc fixture默认会启动独立的临时PostgreSQL进程,而非复用你本地已经运行的PostgreSQL服务:

  • 你配置中指定的port="5432"只是优先尝试端口,若5432已被你本地的正式PostgreSQL服务占用,postgresql_proc会自动顺延寻找空闲端口(如5433、5434等)启动临时实例,你直接连接本地5432的服务自然看不到测试数据
  • 这个临时PostgreSQL实例的所有数据都存储在系统临时目录(Linux下一般是/tmp下的随机命名目录)中,测试运行结束后临时进程会被销毁,对应存储目录也会被自动删除,不会在本地留下持久化数据
  • 你的db_session fixture是函数作用域,每个测试函数执行完成后会执行drop_all删除所有表结构,就算访问临时实例,也要在yield之前的断点处查询才能看到数据

验证方法

你可以在breakpoint()暂停时执行以下操作查看实际测试库信息:

  1. 打印pg_fixture.info.port获取临时PostgreSQL实例的实际运行端口
  2. 用打印出的端口、配置中的用户名密码、数据库名连接PostgreSQL,就能看到你插入的测试数据

扩展说明

如果你希望复用本地已有的PostgreSQL服务而非启动临时实例,可以把postgresql_proc替换为postgresql_noproc fixture,直接指定连接现有服务的参数即可。

内容的提问来源于stack exchange,提问作者user3835102

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:45:04