Python / Django unittest,如何处理外线调用?

时间:2016-09-08 08:41:30

标签: python django unit-testing testing call

我多次阅读,应该使用mock来模仿外部呼叫,并且不应该对任何外部服务进行调用,因为无论外部服务如何,都需要运行测试。

这完全有道理......但是

外部服务如何变化?测试有什么用,测试我的代码是否应该如果因为外部服务被修改/更新/删除/弃用等而永远不知道它何时中断...

我该如何调和?伪代码在

之下
function post_tweet:
    data = {"tweet":"tweetcontent"}
    send request to twitter
    receive response 
    return response

如果我嘲笑这一点,我将无法通知twitter更改了他们的API,现在我必须更新我的测试......

1 个答案:

答案 0 :(得分:3)

有不同级别的测试。

单元测试正在测试,正如您可能从名称中猜测的那样一个单元。例如,函数或方法,也许是类。如果你将它解释得更宽,它可能包含一个用Djangos测试客户端测试的视图。 Unittests从不测试外部资源,如库,依赖项或其他系统的接口。这些事情将被嘲笑。

集成测试正在测试您的接口和外部库,系统和API的使用是否正确实施。如果依赖关系发生变化,您将注意到必须更改代码和单元测试。

还有其他级别的测试,例如行为测试,UI测试,可用性测试。您应该确保在项目中分离这些测试类。