使用Django测试框架从django shell外部访问数据库

时间:2019-02-27 14:13:54

标签: python django django-1.11 django-tests

我目前正在一个有两个用例的项目中:第一个,我的客户端应用程序通过一些各种api调用远程访问我的数据库服务(这种情况很好);第二,允许本地运行的客户端程序使用相同的api调用访问我在本地计算机上的数据库副本,而不必启动服务器进程。

我发现以下代码可在manage.py shell中使用:

from django.test import Client

client = Client()
resp   = client.get("/api/call/path").json()

但是,我无法在manage.py参数之外使用它。我首先运行以下代码:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DataSite.settings")
django.setup()

但是,当我运行代码片段以使客户端运行时,出现以下错误:

[exception.py:135:handle_uncaught_exception() ] Internal Server Error: /api/call/path
Traceback (most recent call last):
<Traceback here>
OperationalError: could not connect to server: Connection refused
    Is the server running on host "127.0.0.1" and accepting
    TCP/IP connections on port 5432?

我尝试遵循manage.py实用程序启动其外壳程序的步骤,但是无法完全复制此服务器在后台运行的内容。

有什么我想念的吗?另外,还有更好的方法吗?

更新

我创建了一个自定义命令调用来执行所需的操作。现在,当我运行manage.py mycustomcommand时,我得到了预期的输出。但是,当我尝试通过call_command让其他python文件执行相同的操作时,出现以下错误:

django.db.utils.OperationalError: could not connect to server: Connection refused
    Is the server running on host "127.0.0.1" and accepting
    TCP/IP connections on port 5432?

我尝试通过call_command的{​​{1}}调用来进行此操作,并通过设置django settings环境变量然后打入django.core.management本身进行的操作到manage.py

有更好的方法吗?

谢谢!

0 个答案:

没有答案