如果引发特定错误,则允许所有测试失败

2024-09-29 21:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目中有2000多个单元测试/pytests。他们中的许多人要求API,但API可能会滞后。如果发生此错误,是否有一种方法可以期望在每个测试中使用APILagError,并对任何测试抛出SKIP/XFAIL

当前:

  • 测试1:好的
  • 测试2:失败
  • 测试3:好的

结果:1失败,2正常=>;测试失败

通缉:

  • 测试1:好的
  • 测试2:跳过/xfail
  • 测试3:好的

结果:2个正常,1个跳过/x失败=>;通过测试


Tags: 项目方法gtapi错误单元测试skipxfail
1条回答
网友
1楼 · 发布于 2024-09-29 21:23:27

我感觉到你的痛苦。我要做一件让人恼火的事,在你提出问题的时候,我不会回答你的问题,而是建议你改变方向。您应该选择以下选项之一:

  1. 模拟该API,这样它就不会超时,您的测试也不会出现问题
  2. 将API延迟视为正常行为,并增加允许的API调用持续时间,以便典型的延迟时间不会导致测试失败
  3. 将您的API延迟视为一个bug,并修复它,以便您的测试通过

为什么片状测试不好?

片状测试意味着您无法区分损坏的代码和缓慢的API调用之间的区别。所以你的测试并不能帮助你捕获bug。那有什么意义呢

我为什么要嘲笑API?这不是真的

如果您想测试API之外的任何东西,就应该这样做。将您的逻辑与API的行为分离,以消除片状,并使代码更易于维护

您可能还可以获得一个行为类似但速度更快的API来作为您的模拟进行测试。比如在本地检查API的代码并用一小部分数据填充它。在测试中使用它,而不是在生产API中使用它。这会让你检查它的逻辑和它的滞后性

相关问题 更多 >

    热门问题