Django 1.8 附带了 一个重构的 TestCase ,它允许通过 setUpTestData() 方法使用事务和保存点在类级别进行数据初始化。这与在每个测试方法之前运行的 unittest 的 setUp() 形成对比。
问题: 现在 setUp()
在 Django 中的用例是什么 setUpTestData()
存在?
我只是在寻找客观的、高层次的答案,否则这个问题对于 Stack Overflow 来说太宽泛了。
原文由 rnevius 发布,翻译遵循 CC BY-SA 4.0 许可协议
设置代码不能作为类方法运行的情况并不少见。一个值得注意的例子是 Django 测试客户端:您可能不想在测试中重用相同的客户端实例,否则会共享很多相同的数据,事实上,客户端实例自动包含在 Django 的子类中
SimpleTestCase
是 每个测试方法而不是为整个类创建。假设您使用setUp
方法对 Django 1.8 之前的世界进行了测试,如下所示:You might tempted to modernize the test case by changing
setUp
tosetUpTestData
, slapping a@classmethod
decorator on top, and changing all theself
s 到cls
。但这将因AttributeError: type object 'MyTestCase' has no attribute 'client'
而失败!相反,您应该将setUpTestData
用于共享数据,将setUp
用于每个测试方法客户端:注意:如果您想知道示例代码中的变量 f 在做什么,它来自 factoryboy - 一个有用的 fixtures 库,用于为您的测试创建对象。