测试Django代码的小片段

时间:2010-11-25 18:20:36

标签: python django django-models django-views django-testing

我仍处于Django App的开发阶段。在编写我的views.py之前,我测试它们以查看我的模型是否正确定义。这是我通过调用

在终端中完成的

python manage.py shell

但是哦,我常常发出一些语法错误,提示我中止shell ctrl-D&重新输入一切。这个过程将永远持续下去。如果我能在一些文件中写下所有这些只是为了我的试验而且会更好。如果一切正常,请将其复制到views.py

这个过程是什么?就像在我的app目录中创建trial.py一样简单。我不能导入Django环境吗?最好的方法是什么?

6 个答案:

答案 0 :(得分:5)

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

开始

答案 1 :(得分:2)

一定要创建一个trial.py进行简单的实验,然后再进行

python manage.py shell

你可以做到

>>> import trial

然后直接从提示中调用试用代码,例如

trial.myfunc()

如果您需要更改内容,可以保存更改后的trial.py并执行

reload(trial)

当然,您可能需要在交互式会话中重新创建任何现有对象才能使用您的更改。

这应该被看作是编写单元测试的补充(根据Jani的答案),但我确实发现这种方法对于使用迭代细化进行尝试很有用。

答案 2 :(得分:1)

在Django项目目录中创建file-for-tests,并将项目路径添加到env变量:

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

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

答案 3 :(得分:1)

对于更简单的情况,您可以使用包含shell_plus管理命令的django-extensions加载项,该命令与标准shell命令类似,但预加载所有模型。

答案 4 :(得分:1)

答案 5 :(得分:0)

之前我也遇到过这个问题,

可能你可以安装ipython,它有一个像这样的魔术函数:

%保存。

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

和ipython是一个非常迷人的工具,它可以完美地接受标准python提示...它还有其他很棒的东西!

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

它将直接调用ipython。