我已经开始为我的Django应用程序编写一些测试,但我不确定如何最好地构建代码。
假设我有一个注册页面和一个仅供登录用户使用的页面。 我的第一个计划是让一个早期方法执行寄存器,后一个方法使用该登录来测试页面:
def test_register_page(self):
//send request to register page and check user has been registered correctly
def test_restricted_page(self):
c = Client();
c.login("someUser","pass");
c.post("/someRestrictedPage/");
//Test response
然而,这意味着现在我的一项考试依赖于另一项考试 我看到的替代方法是在setUp()中调用register,但这仍然意味着受限页面测试依赖于寄存器页面的工作。
我可以尝试在设置中手动创建一个新用户,我也不喜欢这样做,因为这不是测试系统创建的用户。
测试此类情况的常用模式是什么?
答案 0 :(得分:1)
您正尝试在一个测试用例中混合使用许多不同的功能。一个干净的设计将有一个测试用例
让它们彼此依赖将在它们之间引入许多依赖关系 - 并且 - 如果测试失败,则错误将更难调试。注册测试的成功应该通过正确创建用户实例来确定(因此检查用户的必要属性等),而不是通过能够登录某个页面。因此,您需要为视图测试用例设置“正确”的用户实例。这似乎比必要的复杂一点,但它将使未来的维护更容易。 您尝试做的更像是集成测试,它测试整个系统,但在此之前您应该将系统拆分为功能单元< / em>并对此单元进行单元测试! 单个测试越小,定义越好,维护和调试就越容易。