使用随机数据进行单元测试

kar*_*oss 3 testing tdd unit-testing

我已经读过在单元测试中生成随机数据通常是一个坏主意(我明白为什么),但是对随机数据进行测试,然后从随机测试中构建一个固定的单元测试用例,发现了错误.但是我不明白如何很好地组织它.我的问题实际上与特定的编程语言或特定的单元测试框架无关,所以我将使用python和一些伪单元测试框架.以下是我对编码的看法:

def random_test_cases():
   datasets = [
       dataset1,
       dataset2,
       ...
       datasetn
   ]
   for dataset in datasets:
       assertTrue(...)
       assertEquals(...)
       assertRaises(...)
       # and so on
Run Code Online (Sandbox Code Playgroud)

问题是:当这个测试用例失败时,我无法弄清楚哪个数据集导致失败.我看到两种解决方法:

  1. 为每个数据集创建一个测试用例 - 问题是加载测试用例和代码重复.
  2. 通常测试框架允许我们传递消息来断言函数(在我的例子中我可以做类似的事情assertTrue(..., message = str(dataset))).问题是我应该将这样的消息传递给每个断言,这看起来也不像优雅.

有没有更简单的方法呢?

Nic*_*tes 6

我仍然认为这是一个坏主意.

单元测试需要简单明了.给定相同的代码片段和相同的单元测试,您应该能够无限地运行它并且永远不会得到不同的响应,除非有外部因素进入.与此相反的目标将增加您的自动化的维护成本,这违背了目的.

在维护方面,对我来说似乎很懒惰.如果您考虑到您的功能并了解正面和负面的测试用例,那么开发单元测试很简单.

我也不同意那些在同一测试用例中展示如何进行多个测试用例的用户.当测试失败时,您应该能够立即判断哪个测试失败并知道失败的原因.测试应尽可能简单,尽可能简洁/相关.