|
|
1
1
重要提示 :您描述的不是单元测试。它不测试一个单元。它测试了从DjangoURL连接、视图到模型的一大堆东西。这是集成测试。第二,不要创建一个使用外部API(或基本相同的测试客户机)来创建数据的测试,而是通过直接转到DB来检查实体是否已创建。这不好。如果通过某个API创建数据,则应使用同一级别的API检查数据是否已创建。所以我的解释将讨论这种方法。 你所描述的是一个常见的问题,当你开始与TDD。 TDD的重要之处在于:
这听起来可能很简单,而且你很可能已经读过并且知道这一点,但是你如何组织你的工作的后果可能并不那么明显。 主要的结果是,在实现功能之前,您没有从头开始编写完整的测试。你可以从最简单的测试开始,让它工作(通过实现一些功能),重构。然后通过添加更多要检查的内容来更改测试,实现该部分以使测试变为绿色,重构等等。
它与您所写的内容相似(但有重要区别): 之前 您实现了生产代码而不是之后。
1创建使用测试客户端的测试
您有一个测试失败,但没有编写任何代码行。 请注意,尚未传递任何数据,检查非常基本。 2创建url连接和空视图这样做使测试通过。您只需要对代码进行很少的更改,视图也不会返回太多内容。视图此时可以返回一些硬编码的json/dict。 3.1检查实体的id是否已生成
您可以通过向硬编码的dict中添加id来进行此测试。 3.1检查是否生成了实体的唯一id添加一个检查ID是否唯一的新测试:
4添加只有id的模型添加一个只有id的模型并从视图中添加其创建和检索并不困难。不要添加所有需要的字段,稍后将逐步添加。 5在测试中添加一个字段
向模型中添加一个字段并使测试通过。 6继续做TDD添加更多测试和生产代码。 对于一个TDD循环来说,步骤4可能太大。它至少需要对三件事做出改变:
在许多情况下,首先为模型本身创建一个测试来拆分它是有意义的。无法与测试客户端一起工作的测试将如下所示:
然后添加一个模型。确保
我希望这能提供解决这个问题的方法。 |
|
|
2
0
在Django中,方法始终是重新创建用于测试和暂存的工作环境。在测试数据是假的,在暂存数据是“旧”或非常类似的生产。 |