2009-08-14 4 views
0

ブラウズ中に何度かtests dir様々なDjangoアプリで、私はmodels.pysettings.pyファイル(例えばdjango-tagging)を見つけました。私は私のように実行したいので、ユニットテストはジャンゴタギングでどのように機能しますか?

しかし、テストモデルを同期したり、カスタムテスト設定を適用したりするコードはありませんが、テストではdjangoが自動的にマジックロードするかのように使用します。しかし、django-taggingのテスト:manage.py test taggingを実行しようとすると、単一のテストさえしません。

これは私のアプリをテストするために今私が必要としているものですが、実際の方法はわかりません。

どのように動作しますか?

答えて

1

あなたはdjango-taggingでテストを実行したい場合は、あなたが試すことができます:

django-admin.pyテスト--settingsの=のtagging.tests.settings

基本的に、それはのdoctestを使用していますこれらはtestsパッケージ/ディレクトリ内のtests.pyファイルにあります。テストでは、同じディレクトリ内の設定ファイルを使用します(コマンドラインでdjango-adminに指定します)。詳細については、writing doctestsのdjangoドキュメントを参照してください。

+0

シンプルでありながらとても便利です。私は '--settings'パラメータについて知りませんでした。ありがとうございました。 – kurczak

+0

あなたは大歓迎です。喜んで助けてください。 :) – ars

0

「あなたはDjangoで単体テストを書くにはどうしたらいいですか? documentation on testingを確認してください。

私が行ったときに、テスト/サブディレクトリに単体テストを書きました。ディレクトリに空の__init__.pyファイルがあることを確認してください。 models.pyファイルが必要な場合もあります。 unittest.TestCase(module unittest)から派生した単体テストを追加します。 settings.pyのINSTALLED_APPSにモジュール 'xxxx.test'を追加します(「xxxx」はアプリケーションのベース名です)。

は、ここであなたが始めるために私のいくつかのサンプルコードです:

#!/usr/bin/env python 
# http://docs.djangoproject.com/en/dev/topics/testing/ 

from sys import stderr 
import unittest 
from django.test.client import Client 
from expenses.etl.loader import load_all, load_init 

class TestCase(unittest.TestCase): 
    def setUp(self): 
     print "setUp" 

    def testLoading(self): 
     print "Calling load_init()" 
     load_init() 
     print "Calling load_all()" 
     load_all() 
     print "Done" 

if __name__ == '__main__': 
    unittest.main() 

あなたが意味する場合は、「どのように私は私のユニットテストにロードされたデータを得るのですか?」、そして、同じドキュメントページに記載の器具を使用します。

+0

いいえ、実際はありません。 問題は、私の通知アプリが外部受信者モデル(私のアプリのRECIPIENT_MODEL設定に従う)にバインドされているので、他のアプリとは独立してテストしたいと思います。そのためには、テスト用のプレースホルダーモデルが必要です。 – kurczak

+0

あなたの質問は、「私が私のように実行したいので、ユニットテストはジャンゴタギングでどのように機能するのですか」に近いですか? – hughdbrown

+0

はい、もっと似ています。 – kurczak

関連する問題