gpt4 book ai didi

python - 单元测试与测试之间的依赖关系

转载 作者:行者123 更新时间:2023-12-03 01:50:51 26 4
gpt4 key购买 nike

当你有时,你如何进行单元测试

  • 一些常规单元测试
  • 更复杂的测试检查边缘情况,具体取决于一般情况

举个例子,想象一下测试 CSV 阅读器(我只是编写了一个用于演示的符号),

def test_readCsv(): ...

@dependsOn(test_readCsv)
def test_readCsv_duplicateColumnName(): ...

@dependsOn(test_readCsv)
def test_readCsv_unicodeColumnName(): ...

我希望子测试仅在父测试成功时才运行。这背后的原因是运行这些测试需要时间。许多归咎于单一原因的故障报告也不会提供任何信息。当然,我可以将所有边缘情况硬塞到主要测试中,但我想知道是否有一种更结构化的方法来做到这一点。

我发现了这些相关但不同的问题,

更新:

我找到了TestNG它对测试依赖项有很好的内置支持。您可以编写这样的测试,

@Test{dependsOnMethods = ("test_readCsv"))
public void test_readCsv_duplicateColumnName() {
...
}

最佳答案

就我个人而言,我不担心在单元测试之间创建依赖关系。对我来说,这听起来有点代码味道。几点:

  • 如果测试失败,让其他测试失败,并充分了解不利的代码更改所造成的问题的严重程度。
  • 测试失败应该是异常(exception)而不是常态,那么当绝大多数时间(希望如此!)没有带来任何好处时,为什么还要浪费精力并创建依赖关系呢?如果失败经常发生,那么您的问题不在于单元测试依赖项,而在于频繁的测试失败。
  • 单元测试应该运行得非常快。如果它们运行缓慢,那么请将精力集中在提高这些测试的速度上,而不是防止后续失败。通过进一步解耦代码并使用依赖项注入(inject)或模拟来实现此目的。

关于python - 单元测试与测试之间的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com