【问题标题】:How to properly unit test a web app?如何正确地对 Web 应用程序进行单元测试?
【发布时间】:2014-05-24 20:07:09
【问题描述】:

我正在自学后端和前端 Web 开发(如果重要的话,我会使用 Flaks),在对我的应用程序进行单元测试时,我需要一些指导。

我最关心的是这些不同的情况:

  1. 数据的内部一致性:这很简单——当涉及到登录过程等问题时,我的目标是 100% 的覆盖率,并且最一般地,检查所有内容在每次请求保持一致后,python 代码和数据库之间都会发生这种情况。

  2. JSON 响应:我正在 atm 为我的应用程序上的每个 get/post 调用执行测试请求,然后 断言 json 响应必须这个和那个,但老实说,我不太欣赏这样做的价值 - 可能是因为我的应用仍处于早期阶段?

    • 我应该继续测试每个请求的每个 json 响应吗?
    • 如果是,有什么长期好处?
  3. 外部 API:我在这里读到了相互矛盾的意见。假设我正在使用外部 API 来翻译一些文本:

    • 我是否应该只测试非常高级别的 API,即查看我是否获得了访问令牌,仅此而已?
    • 我是否应该测试返回的 json 是否符合我的预期?
    • 我是否应该不进行任何测试以加快我的测试套件的速度并且不让它依赖于第三方 API?
  4. 输出的 HTML:我也迷路了。假设我正在测试函数 add_post()

    • 我是否应该测试在请求之后的页面上所需的帖子实际上是否存在?
    • 我开始检查 response.data 行中是否存在字符串/html 标签,但后来我有点放弃了,因为 1)这需要很多时间,2)我必须不断地重写测试,因为我我经常更换应用。
    • 在这种情况下推荐的方法是什么?

谢谢你,很抱歉冗长。我希望我说清楚了!

【问题讨论】:

  • 你描述的不是单元测试;这些是集成测试。

标签: python unit-testing flask integration-testing


【解决方案1】:

这大部分是个人意见,会因开发人员而异。

  1. 有大量用于单元测试的 Python 库 - 作为项目的开发人员,最好留给您做决定,以找到最适合您的工具集/构建过程的库。

    李>
  2. 这本身并不完全是“单元测试”,我认为它更像是集成测试。这并不是说这没有价值,这只是一项不同的任务,并且经常会使用不同的工具。对于这样的事情,从长远来看,测试会有所回报,因为您会牢记您的错误修复和功能添加不会影响您的端到端代码。如果你已经在做,我会继续。在进行重构以确保功能一致时,这类测试非常有价值。

  3. 我不会浪费时间测试第 3 方 API。确保他们的产品运行可靠是他们的工作。如果您开始测试第 3 方功能,您将整天都在那里。使用 3rd 方 API 的一个重要原因是您不必测试它们。如果您发现您的应用程序因第 3 方 API 而出现故障,则可能是时候选择不同的 API。如果您的项目规模扩大到每次 API 失败时您都会损失数千美元的规模,那么届时您将有一大堆新问题需要处理(并希望有资源来解决这些问题)。

    李>
  4. 一般来说,我不测试静态内容或 html。有一些工具(网络抓取工具)可以让您控制自己的网站以获得一致的功能。如果您有时间,我个人会将其作为最后改进阶段的最后优先事项。大多数网站的外观变化如此频繁,以至于编写测试不值得。外观也很容易手动测试,因为它非常直观。

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2014-01-30
    • 1970-01-01
    • 2010-09-23
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多