【发布时间】:2011-09-30 16:57:12
【问题描述】:
我目前为每个应用程序使用一个固定装置文件,但随着项目的增长,测试花费的时间太长,我认为为每个测试类加载的(现在很大的)固定装置有问题。
由于担心重复和维护,我避免使用许多较小的固定装置,但我知道这是不可避免的。
不过,在我走这条路之前,我想我会问其他人如何使用固定装置来测试他们的应用程序/项目。
【问题讨论】:
我目前为每个应用程序使用一个固定装置文件,但随着项目的增长,测试花费的时间太长,我认为为每个测试类加载的(现在很大的)固定装置有问题。
由于担心重复和维护,我避免使用许多较小的固定装置,但我知道这是不可避免的。
不过,在我走这条路之前,我想我会问其他人如何使用固定装置来测试他们的应用程序/项目。
【问题讨论】:
是的,您在使用大量固定装置时遇到了问题。随着测试套件的增长,不断的反序列化/加载确实会增加。我建议编写实用程序函数来根据需要创建数据,而不是依赖固定装置。例如,您可能有一个创建新 auth.User 的函数,例如:
def create_user(data=None):
data = data or {}
defaults = {
'username': get_random_string(),
'email': get_random_email(),
'password': get_random_string()
}
defaults.update(data)
return User.objects.create_user(**defaults)
编写一个生成随机字符串/电子邮件的函数留给读者作为练习:)
【讨论】:
确保您使用 sqlite 进行测试。与其他数据库引擎相比,速度有很大差异。
【讨论】:
tremendously 因为 sqlite 在内存中工作。可以配置 django 设置,以便 mysql 或 postrges 使用内存表而不是常规表,如果这样做,则数据库之间没有显着差异。