鉴于我的模型如下:
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?如何优化上述夹具和测试?