優化的安裝和拆卸樣品Django的模型如下:使用django_nose並鑑於我的模型Django的動態夾具
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()
我將需要一些夾具值。 因此,以下是我的查詢:
我如何讓我的夾具一代幹。意思是不在每個功能中創建來自G
的書籍和作者夾具?
django_nose有助於優化setUp和tearDown方法並提高速度,我如何在這裏使用它們?只是把* django_nose.FastFixtureTestCase *會照顧setUp tearDown痛苦?或者我需要使用TransactionTestCase?我如何優化上述夾具和測試?
如果您使用的是django-dynamic-fixture,FastFixtureTestCase將無法提供幫助。正如作者在https://github.com/jbalogh/django-nose#how-fixture-bundling-works上所說的那樣:「對於未來的測試,最好使用」模型製造者「模式,以編程方式創建數據庫對象。這樣,測試避免了他們不需要的設置,測試和它所需的確切狀態之間有一個更清晰的聯繫。夾具捆綁器旨在使現有的測試,已經承諾固定裝置,更容忍。「 – jasisz