Django 测试依赖于其他页面/行为

标签 django testing

我已经开始为我的 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() 中调用注册,但这仍然意味着受限页面测试依赖于注册页面的工作。

我可以尝试在设置中手动创建一个新用户,但我也不喜欢,因为这不是在测试系统创建的用户。

测试这种情况的常用模式是什么?

最佳答案

您正试图在一个测试用例中混合使用许多不同的功能。一个干净的设计应该有一个测试用例

  • 用于用户注册和
  • 一个是为了风景。

让它们相互依赖会在它们之间引入很多依赖关系——而且——如果测试失败,错误将更难调试。注册测试的成功应该通过正确创建用户实例来确定(因此检查用户的必要属性等)而不是通过能够在某个页面上登录来确定。因此,您需要为 View 测试用例设置一个“正确的”用户实例。这看起来可能比必要的要复杂一些,但它将使以后的维护变得容易得多。 您尝试做的更像是集成测试,它测试整个系统,但在此之前您应该将系统拆分为功能单元 并对该单元进行单元测试! 单个测试越小且定义明确,它们的维护和调试就越容易。

关于Django 测试依赖于其他页面/行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719024/

相关文章:

java - 尝试使用 TestDroid 运行自动测试时,Android 应用程序无法连接到互联网

django - 在 Django View 中过滤和重定向未按预期执行

python - 动态可扩展Mysql表

testing - 我可以更改 TFS 测试用例的布局吗?

java - 不抛出测试异常

php - 一台机器上多个服务器/php 版本的自动化单元测试

testing - XEN 与 KVM 的状态,用于内部虚拟服务器场(如现场农场)

database - 在不重新启动服务器的情况下使 django 的设置缓存无效?

django - 执行删除数据库后,开发服务器上的 django 管理页面中缺少 CSS

python - 当前在 Django 模板中获取主页 URL(域)的方法?