gpt4 book ai didi

python - 对打开文件的脚本进行单元测试

转载 作者:太空狗 更新时间:2023-10-30 01:41:39 24 4
gpt4 key购买 nike

我写了一个脚本来打开一个文件,读取内容并进行一些操作和计算,并将它们存储在集合和字典中。

我该如何为这样的事情编写单元测试?我的问题具体是:

  1. 我会测试文件是否已打开吗?
  2. 文件很大(它是 unix 字典文件)。我将如何对计算进行单元测试?我真的必须手动计算所有内容并测试结果是否正确吗?我有一种感觉,这违背了单元测试的全部目的。我没有通过标准输入接受任何输入。

最佳答案

这不是单元测试的目的!

  1. 您的文件不代表一个 UNIT,所以您不测试该文件或使用该文件!
  2. 您的单元测试应该测试处理 a) 文件处理 b) 计算的函数/方法的每个方法
  3. 您的单元测试超出被测单元的代码行的情况并不少见。

单元测试意味着(不完整且不是书本定义):

  • 简约/原子 - 将单位拆分为尽可能最基本/最简单的单位;一个单元通常是一个可调用的(方法、函数、可调用对象)
  • 关注点分离——你在每一个测试中只测试一件事;如果要测试单个单元的不同条件,则编写不同的测试
  • 确定性——你给单元一些东西来处理,事先知道它的结果应该是什么
  • 如果您的被测单元需要特定的环境,您可以创建夹具/测试设置/模型
  • 单元测试(根据经验)快得惊人!如果它很慢,请检查您是否违反了上面的另一点
  • 如果你需要测试一些违反上面规定的东西,你可能已经朝着集成测试迈出了下一步测试
  • 您可以将单元测试框架用于非单元测试,但不要仅仅因为使用了单元测试框架就将其称为单元测试

这家伙 (Gary Bernhardt) 有一些有趣的东西 practical examples测试和单元测试的含义。

更新一些说明:

“1. 我会测试文件是否打开了吗?”

好吧,你可以这样做,但是那个“UNIT”是什么?请记住,测试只有两个解决方案:通过和失败。如果你的测试失败了,它应该(理想情况下必须)只有一个原因:你的单元(=函数)很糟糕!但在这种情况下,您的测试可能会失败,因为:* 文件不存在* 被锁住了* 已损坏* 没有留下文件句柄* 内存不足(大文件)* 月相等等。

那么失败(或通过)的“单元”测试对您的单元有何影响?您不单独测试您的设备,而是使用它测试整个周围环境。那更像是一个系统测试!尽管如此,如果您想测试是否成功打开文件,您至少应该模拟一个文件。

“2 ...我将如何对计算进行单元测试?我真的必须手动计算所有内容并测试结果是否正确吗?”

没有。您将为角落案例和常规案例编写测试,并根据处理后的结果检查预期结果。所需的测试量取决于计算的复杂性和规则的异常(exception)情况。

例如:

def test_negative_factor(self):
assert result

def test_discontinuity(self):
assert raise exception if x == undefined_value

我希望我说得更清楚了!

关于python - 对打开文件的脚本进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520279/

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