私のモデルは次のとおりです。
class Author(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ManyToManyField(Author)
django-dynamic-fixtureを使用して、テスト用のモデルフィクスチャを簡単に生成しています。また、django_noseを使用しています。これは、テストを非常にうまく実行および管理するのに役立ちます。settings.pyファイルにtest_runnerをセットアップし、すべてのインストール可能ファイルを配置します。
上記のようにモデルを生成するには、テストは次のようになります。
from django_dynamic_fixture import G
class BookModelTest(TestCase):
def test_book_creation(self):
author1 = G(Author)
author2 = G(Author)
book = G(Book, author=[author1])
book_obj = Book.objects.all()
self.assertEquals(book_obj.count(), 1)
self.assertEquals(list(book_obj[0].author), [author1])
self.assertEquals(book_obj[0].title, book.title)
self.assertNotEquals(list(book_obj[0].author), [author1])
def another_test(self):
"Here as well i need the same, author1, author2 and book
また、私が書く場合
class AuthorModelTest(TestCase):
def test_some_stuff()
フィクスチャの値が必要になります。だから以下は私が持っていたクエリです:
フィクスチャ生成をDRYに保つにはどうすればよいですか。G
各機能から本や著者のフィクスチャを作成しないという意味ですか?
django_noseは、setUpメソッドとtearDownメソッドを最適化し、速度を向上させるのに役立ちます。ここでそれらをどのように使用できますか?* django_nose.FastFixtureTestCase *を置くだけで、セットアップのティアダウンの問題を解決できますか?または、 TransactionTestCaseを使用する必要がありますか?上記のフィクスチャを最適化してテストするにはどうすればよいですか?