我正在教自己后端和前端Web开发(如果重要的话我正在使用Flaks)并且我需要一些关于单元测试我的应用程序的指示。
我主要关注这些不同的情况:
数据的内部一致性:这很简单 - 当涉及到登录程序等问题时,我的目标是100%覆盖率,最常见的是检查所有内容在每个请求保持一致后,在python代码和数据库之间发生。
JSON回复:我正在做的是为我的应用上的每个get/post
调用执行测试请求,然后断言 json的响应必须是 this-and-that ,但说实话,我不太欣赏这样做的价值 - 也许是因为我的应用还处于早期阶段?
外部API :我在这里阅读了相互矛盾的意见。假设我正在使用外部API来翻译某些文本:
输出的HTML :我也迷失了这个。假设我正在测试函数 add_post():
response.data
中是否存在字符串/ html标签,但后来我放弃了因为1)它需要花费很多时间而2)我必须不断重写测试因为我经常更换应用程序。谢谢你,并且对于冗长而感到抱歉。我希望自己清楚明白!
答案 0 :(得分:4)
这大多是个人意见,因开发人员而异。
有大量用于单元测试的python库 - 作为项目开发人员,最好留给您一个最适合您的工具集/构建过程的决策。
这不是完全单位测试'本身,我认为它更像集成测试。这并不是说这不值钱,它只是一个不同的任务,并且经常使用不同的工具。对于类似这样的事情,从长远来看,测试会得到回报,因为您可以清楚地知道您的错误修复和功能添加不会影响您的端到端代码。如果您已经这样做了,我会继续。在重构道路以确保一致的功能时,这些类型的测试非常有价值。
我不会浪费时间测试第三方API。他们的工作是确保他们的产品行为可靠。如果您开始测试第三方功能,您将整天待在那里。使用第三方API的一个重要原因是您不必测试它们。如果您发现您的应用因第三方API而中断,那么可能是时候选择不同的API了。如果您的项目规模扩大到每次API失败时您都会损失数千美元,那么您当时就会有一个全新的问题要处理(并希望有资源来解决这些问题)。
一般情况下,我不会测试静态内容或HTML。有一些工具(网络抓取工具),可以让你自己的网站,以获得一致的功能。如果你有时间,我个人会把这作为最后阶段的最后优先考虑。大多数网站的外观和感觉经常变化,以至于编写测试并不值得。外观也很容易手动测试,因为它非常直观。