自动生成Python单元测试数据

3
我有一个模块需要测试,其中包括一系列的函数/简单类。想知道是否有尝试(即包)可以自动生成:
1) 从包含函数定义的原始Python文件生成Python代码。
2) 这个代码列表调用函数,并将随机/参数化数据作为参数传递。
使用inspect和python元类是技术上可行的,通常仅限于数值类型函数...(numpy数组)。
因为字符串(如url输入)是不可能的(只能进行参数化...)。
编辑:随机指的显然是"参数化随机"。
假设我们有
  def f(x1,x2,x3) 

  For all xi of f
   if type(xi) = array1D -> 
       Do those tests: empty array, zeros array, negative array(random),   
      positivearray(random), high values, low values, integer array, real  
      number array, ordered array, equal space array,..... 

   if type(xi)=int -> test  zero, 1, 2,3,4, randomValues, Negative

人们是否认为使用inspect和元类可以实现这样的项目?(仅限于numpy / 数值项)。

假设您有一个非常大的库......,可以在后台完成任务。


你真的想通过从函数构建测试来进行测试吗?在测试驱动开发中,你需要创建测试,并设计函数以在这些测试中正确工作。随机数据不能很好地排除问题。问题通常出现在边缘情况下 - 空数组、0 值、nan 值、意外值。 - hpaulj
嗨,随机意味着显然的“参数随机”。我们来举个例子func(x1,x2,x3),如果type(xi)= array1D->进行以下测试:空数组,零数组,负数组(随机),正数组(随机),高值,低值,整数数组,实数数组,..... - user5497885
2个回答

1
您可能在想模糊测试,即向函数提交一堆垃圾数据以查看是否会使其表现不佳。听起来 Hypothesis库可以让您根据某些参数生成不同的测试用例。

假设看起来更接近问题。缺少两个要素:1)这不是垃圾数据:这是参数化数据,数据遵循一些边界。2)输出结果:崩溃、错误、结果……可以分析以猜测函数正在做什么。3)表现不佳只是一个副作用/后果…… - user5497885
仅凭假设,您需要找到并放置函数的不变量。一切都根据这个不变量进行检查。 - user5497885

0

我花了很多时间搜索,似乎这种项目并不存在(据我所知):

从技术上讲,这是一种包的混合(问题):

Hypothese:生成输入数据,运行代码时出现崩溃/错误。 (没有Hypothese不变部分)

Jedi:代码的静态分析/类型推断 类型推断在Python中是一个困难的问题(总体而言) 实现类型推断

如果类型是数字/数字数组: 存在边界/典型用法已经明确定义

如果类型是字符串:推断非常困难,需要人工猜测。

对于其他类型也是如此,上下文猜测非常重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接