我有一个 django 应用程序,我正在对其进行一些单元测试。所以我遇到的问题不是当一个测试插入测试数据库时。之后是测试。由于每个测试都没有保存事务,因此上一个测试中的条目不存在,这很好,尽管自动增量 id 正在增加,就好像数据库中仍有条目一样。我需要解决这个问题,因为我在无法控制给它的 id 的地方插入了更多的数据,并且需要能够为测试获取这个特定的数据。如果我对代码进行硬编码以获取对象,则每次添加新测试时都必须更改代码,这并不理想。
我有多个测试正在运行,但为了简单起见,我将展示两个。
from django.test import TestCase
from app.models import Model
class VersionMerge(TestCase):
fixtures = ['initial_test_data.json']
def test_model_test1(self):
*Insert new data*
*grab new data in*
*Check data*
def test_model_test2(self):
*Insert new data*
*grab new data*
*Check data*
Run Code Online (Sandbox Code Playgroud)
问题出现在test_model_test2 中,当我尝试获取新数据时,我必须打印出对象以查看 id 才能获取它。
我有一个关于如何在实际数据库而不是测试数据库上修复此问题的解决方案。对于我的,我需要能够连接到 docker 容器并运行 psql 命令来重置 table_id_seq。
docker exec -t $CONTAINER_ID psql --dbname=test_database_name -username=user -c "SELECT setval('modelName_appName_id_seq', 2, true)"
Run Code Online (Sandbox Code Playgroud)
这将转到表并将过去的 id 值设置为 2 以使下一个 id 为 3。但是,每当我尝试从 python 内部运行命令时,使用
cmd = …Run Code Online (Sandbox Code Playgroud) 在Django admin docs 中,它提到了字段集。他们指定一个类的例子collapse。此类将使字段集在管理页面中可折叠。我发现了两个可以使用的类的其他示例。我发现正在寻找我可以使用的其他类的列表 is wideor extrapretty。除了这些示例之外,我无法classes在字段集中找到有关该选项的任何其他内容。
我对 guile 和 schema 很陌生,我现在想做的是获取一个 schema 文件(file.scm)并将其加载到一个变量中,这样我就能够解析它,但我很难找到如何随时随地执行此操作。
我现在拥有的是
(define var (load "file.scm")) ; loads file scheme
Run Code Online (Sandbox Code Playgroud)
但我不确定如何开始阅读这些台词。