2010-11-25 8 views
0

の小さなスニペットを。私のviews.pyを書く前に、モデルを正しく定義しているかどうかテストします。これは私がテストアウト私はDjangoのアプリケーションの開発段階ではまだ午前Djangoのコード

python manage.py shell

を呼び出すことにより、端末でそれを行うしかし、ああそう頻繁に私はすべてを再入力シェルctrl-D &を中止するために私を促すいくつかの構文エラーを作ります。このプロセスは永遠に続く。すべてのファイルをにコピーすれば、私はこのファイルを何らかのファイルに書き込むことができます。&

このプロセスは何ですか?私のアプリケーションディレクトリにtrial.pyを作成するのと同じくらい簡単ですか?私はDjangoのenvをインポートする必要はありませんか?これを行う最善の方法は何ですか?どのようにユニットテストを書くことについて

+3

実際にあなたのアプリケーションに入れる前に、あなたのコードのすべてをPythonインタプリタに書き留めておきますか? – Falmarri

+0

python manage.py sql app_name –

+1

"retype everything"を実行しますか?あなたはあなたのソースを格納するために "ファイル"を使用することを聞いたことがありますか? Djangoチュートリアルではこれを行うための良い方法を示しています。なぜあなたはDjangoのチュートリアルに従っていませんか? –

答えて

2

を読むことによって始めることができます試しに、直接、プロンプトから、例えばあなたが作るためには、対話型セッション内の既存のオブジェクトを再作成する必要があるかもしれません、あなたは物事を変更する必要がある場合

trial.myfunc() 

あなたは自分の変更trial.pyを保存することができますし、もちろん

reload(trial) 

行いますあなたの変更の使用。

これは(ヤニの答えあたりとして)ユニットテストを書くことについての補足見られるべきであるが、私は反復改良を使用して物事を試すために、このアプローチは便利です。

+1

モデルをリロードするのはちょうどそのようには機能しません:http://stackoverflow.com/questions/890924/how-do-you-reload-a-django-model-module-using-the-interactive-interpreter-via-ma/3466579#3466579 –

+0

@トーマス:合意した、私は、オブジェクトを再作成することに言及したとき、単純なPythonオブジェクトを考えていました...あなたのリンク先の答えは、欠けている部分を埋めるものです。 –

5

? 1つのコマンドで簡単に実行できます。あなたはおそらく、あなたが

>>> import trial 

を行い、その後のコードを呼び出すことができ、その後

python manage.py shell 

を行った後、簡単な実験のためのtrial.pyを作成し、すべての手段によってdjango manual chapter on testing

+0

単体テストはシェルの関数を試してみるのと同じではなく、関数が間違っていることを知っているが、エラーを検出するためには結果を見なければならないので、単位テストでどうやってやるのだろうか? – ffriend

+0

テストに失敗しても、あなたの関数で何が動作していないのかが分からない場合は、正確なテストではありません。 –

1

あなたのファイルのため、テストDjangoのプロジェクトディレクトリ内に作成し、ENV変数に、プロジェクトへのパスを追加します。その後

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

をプロジェクトから任意のモジュールをインポートできるようになります(たとえば、モデルmodels.pyまたはviews.pyの関数から)、お気に入りのIDEをエディタとシェルで使用します。

1

簡略化のために、標準shellコマンドに似ていますが、すべてのモデルをプリロードするshell_plus管理コマンドを含むdjango-extensionsアドオンを使用できます。

0

は、あなたがこのように呼ばれる魔法の機能を持っているipythonを、インストールすることができかもしれません。

これは何をあなたのファイルに入力を保存します。

ipythonは非常に魅力的なツールです。標準的なPythonプロンプトのパースを完全に受け入れることができます。他にもすばらしいものがあります。

とDjangoで、あなたはipythonをインストールしている場合は、ときに入力のpython manage.pyシェル、

それが直接ipython起動します。

関連する問題