python - 用手工计算还是程序计算来测试?

标签 python django testing

我正在使用 Django,我需要编写一个需要计算的测试。 最好的做法是手动计算期望值,还是可以使用求和函数来计算(见下文)

这个例子对我来说更容易,因为我不需要手动计算:

def test_balance(self):
    amounts = [120.82, 90.23, 89.32, 193.92]
    for amount in amounts:
        self.mockedTransaction(amount=amount)
    total = Balance.total()

    self.assertEqual(total, sum(amounts))

或者在这个例子中我必须手动计算期望值:

def test_balance(self):
    self.mockedTransaction(amount=120.82)
    self.mockedTransaction(amount=90.23)
    self.mockedTransaction(amount=89.32)
    self.mockedTransaction(amount=193.92)
    total = Balance.total()

    self.assertEqual(total, 494.29)

最佳答案

您的 total 函数是否只使用 sum 来获取数字列表的总和?如果是这样,您的测试将执行与被测代码相同的步骤。在那种情况下,第一个测试不能失败。最好使用手动生成的值。 (不过,如果 total 只是包装 sum,那么我就不会花很多时间担心它了。该功能已经过全面测试。)

如果 Balance.total() 是通过其他方法(例如在数据库上运行的 SQL 查询)获取其值的,那么可以在您的测试方法中计算预期值,尤其是在简单的情况,例如对值列表求和。如果计算非常复杂,那么您可能想要返回到手动计算的值。否则,您的测试代码可能与被测代码一样难以调试。

关于python - 用手工计算还是程序计算来测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53050918/

相关文章:

python - writerow() 或 writerows() 循环

mysql - 我需要测试这个吗?

ruby-on-rails - 我如何测试 Rails rescue_from?

python - 为什么在这种情况下不需要 global 关键字?

python:从列表中获取第一个值作为字典中的值

python - Linux:如何将命令行参数传递给传递给脚本的命令行参数?

Javascript 在 JSP 中输入 Null 测试

Django-tinymce + django-filebrowser-no-grapelli 不起作用

python - 如何在django中编写re_path url来读取特殊字符?

javascript - 如何用JS改变href属性的值?