Python 测试Django代码的小片段

Python 测试Django代码的小片段,python,django,django-models,django-views,django-testing,Python,Django,Django Models,Django Views,Django Testing,我仍处于Django应用程序的开发阶段。在编写我的views.py之前,我会测试它们,看看我的模型是否定义正确。我在终端中通过调用 python manage.py shell 但是,我经常会出现一些语法错误,提示我中止shellctrl-D&重新键入所有内容。这一过程需要很长时间。如果我能将所有这些都写在某个文件中只是为了我的试用&如果一切顺利,就把它复制到views.py 这个过程是什么?它是否像在我的应用程序目录中创建trial.py一样简单。我不需要导入Django env吗?最好的方法

我仍处于Django应用程序的开发阶段。在编写我的views.py之前,我会测试它们,看看我的模型是否定义正确。我在终端中通过调用

python manage.py shell

但是,我经常会出现一些语法错误,提示我中止shell
ctrl-D
&重新键入所有内容。这一过程需要很长时间。如果我能将所有这些都写在某个文件中只是为了我的试用&如果一切顺利,就把它复制到
views.py


这个过程是什么?它是否像在我的应用程序目录中创建
trial.py
一样简单。我不需要导入Django env吗?最好的方法是什么?

编写单元测试怎么样?您可以使用一个命令轻松地执行它们。您可以通过阅读

以各种方式创建一个用于简单实验的trial.py,然后在完成之后开始

python manage.py shell
你能行

>>> import trial
然后直接从提示符调用试用中的代码,例如

trial.myfunc()
如果需要更改内容,只需保存已更改的trial.py并执行即可

reload(trial)
当然,您可能需要在交互式会话中重新创建任何现有对象,以利用所做的更改


这应该被视为是对编写单元测试的补充(根据Jani的回答),但我确实发现这种方法对于使用迭代优化进行尝试非常有用。

在Django项目目录中创建测试文件,并将项目路径添加到env变量:

import sys
sys.path.append(os.path.realpath(os.path.dirname(__file__)))

之后,您将能够从项目中导入任何模块(例如,models.py中的模型或views.py中的函数),并使用您喜爱的IDE及其编辑器和shell

对于更简单的情况,您可以使用包含
shell\u plus
管理命令的附加组件,该命令类似于标准
shell
命令,但预加载所有模型

你需要。

我以前也有过这个问题

也许你可以安装ipython,它有一个神奇的功能,叫做:

%保存

这将把您输入的内容保存到文件中

ipython是一个非常迷人的工具,它可以完美地发挥标准python提示符的作用。。它还有其他奇妙的东西

在django中,如果您安装了ipython,那么当您输入python manage.py shell时


它将直接调用ipython。

您是说在将每一段代码实际放入应用程序之前,都要在python解释器中编写代码?运行python manage.py sql app\u name“重新键入所有内容”?您听说过使用“文件”来包含您的源代码吗?Django教程展示了一种很好的方法。为什么不学习Django教程?单元测试与在shell中尝试函数不同-想象一下,你知道你的函数是错误的,但是要检测错误,你必须看到结果,那么,你将如何使用单元测试呢?如果测试失败并不能告诉你函数中什么不起作用,那么,这不是一个足够精确的测试。重新加载模型并不能像那样工作:。@Tomasz:同意,我提到重新创建对象时,考虑的是普通Python对象。。。您链接到的答案将填充缺少的部分。