lau*_*ids 3 python integration-testing unit-testing flask
我正在自学后端和前端 Web 开发(如果重要的话,我正在使用 Flaks)并且在对我的应用程序进行单元测试时我需要一些指示。
我最关心的是这些不同的情况:
数据的内部一致性:这很简单 - 我的目标是 100% 的覆盖率,当涉及到登录过程等问题时,最常见的是检查每次请求后 Python 代码和数据库之间发生的所有事情是否仍然存在持续的。
JSON 响应:我正在做的 atm 是get/post对我的应用程序上的每个调用执行测试请求,然后断言json 响应必须是this-and-that,但老实说,我不太欣赏这样做的价值- 也许是因为我的应用程序仍处于早期阶段?
外部 API:我在这里读到了相互矛盾的意见。假设我正在使用外部 API 来翻译一些文本:
输出的 HTML:我也迷失了这一点。假设我正在测试函数add_post():
response.data,但后来我有点放弃了,因为 1)它需要很多时间和 2)我必须不断地重写测试,因为我正在更改应用程序所以经常。谢谢你,抱歉我的冗长。我希望我说清楚了!
其中大部分是个人意见,会因开发人员而异。
有大量用于单元测试的 Python 库 - 作为项目的开发人员,最好由您做出决定,以找到最适合您的工具集/构建过程的库。
这本身并不完全是“单元测试”,我认为它更像是集成测试。这并不是说这没有价值,它只是一项不同的任务,通常会使用不同的工具。对于这样的事情,从长远来看,测试会带来回报,因为您会意识到您的错误修复和功能添加不会影响您的端到端代码。如果你已经这样做了,我会继续。在进行重构以确保一致的功能时,这些类型的测试非常有价值。
我不会浪费时间测试 3rd 方 API。他们的工作是确保他们的产品运行可靠。如果您开始测试 3rd 方功能,您将一整天都在那里。使用 3rd 方 API 的一个重要原因是您不必测试它们。如果您发现您的应用程序因 3rd 方 API 而崩溃,那么可能是时候选择不同的 API 了。如果您的项目扩展到每次 API 失败时您都会损失数千美元的规模,那么届时您将面临一系列全新的问题(希望有资源来解决这些问题)。
一般来说,我不测试静态内容或 html。有一些工具(网络抓取工具)可以让您浏览自己的网站以获得一致的功能。如果您有时间,我个人会将其作为最后一个改进阶段的最后优先事项。大多数网站的外观和感觉经常变化,以至于编写测试是不值得的。外观也很容易手动测试,因为它非常直观。