Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中自动生成用于单元测试的数据_Python_Unit Testing_Numpy_Metaprogramming_Metaclass - Fatal编程技术网

在Python中自动生成用于单元测试的数据

在Python中自动生成用于单元测试的数据,python,unit-testing,numpy,metaprogramming,metaclass,Python,Unit Testing,Numpy,Metaprogramming,Metaclass,我有一个模块要测试,模块包括一系列函数/简单类。 想知道是否有任何尝试(即软件包)自动生成: 1) 从包含函数定义的初始Python文件生成Python代码 2) 此代码列出了使用随机/参数化数据作为参数的函数调用 使用inspect和python元类在技术上是可行的, 通常仅限于数值型函数…(numpy数组) 因为字符串(即url输入)是不可能的(仅参数化…) 编辑:通过随机,它显然意味着“参数随机” 假设我们有 def f(x1,x2,x3) For all xi of f

我有一个模块要测试,模块包括一系列函数/简单类。 想知道是否有任何尝试(即软件包)自动生成:

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和MetaClass可以实现这样的项目吗?(仅限于numpy/数字项目)


假设您有一个非常大的库…,事情可以在后台完成。

您可能会考虑模糊测试,将一堆垃圾数据提交给一个函数,以查看是否有任何东西使其表现不好。这听起来好像可以让你根据一些参数生成不同的测试用例。

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

从技术上讲,这是一个组合包(问题):

假设:为输入生成数据,运行带有崩溃/错误的代码。 (没有假设的不变部分)

Jedi:代码静态分析/类型推断 类型推断在Python中是一个困难的问题(通常)

如果类型为num/num的数组: 存在边界/明确定义了典型用途

如果类型是字符串:如果没有人类的猜测,推理是相当困难的


与其他人一样,上下文猜测也很重要

这真的是您希望测试的方向吗?从函数构建测试?在测试驱动开发中,您创建测试,并设计在这些测试中正常工作的函数。随机数据不能很好地解决问题。问题通常出现在边缘情况下-空数组、0值、nan值、意外值。嗨,随机,它显然意味着“参数随机”。让我们以func(x1,x2,x3)为例,如果类型(xi)=array1D->执行这些测试:空数组、零数组、负数组(随机)、正数组(随机)、高值、低值、整数数组、实数数组……假设看起来更接近问题。缺少2项:1)这不是垃圾数据:这是参数化数据,数据遵循一些边界。2) 输出结果:崩溃、错误、结果。。。。可以通过分析猜测函数在做什么3)行为不好只是一个副作用/后果……就假设而言,人、假设,你需要找到并放置函数的不变量。一切都是根据这个不变量检查的。