如何测试具有 N 个不同路径的函数?

萨蒂亚吉特·卡内特卡

我有一个验证模型类的函数,它必须在字符串的情况下检查类的每个成员是否为非空或非空。

这个is_complete函数的逻辑是这样的:

def is_complete(profile):
    if profile.first_name in (None, ''):
        return False
    elif profile.last_name in (None, ''):
        return False
    elif profile.dob is None:
        return False
    .
    .
    .# and checks so on for all members of the profile instance
    .
    .

    return True

我的问题是,由于执行可以采用的可能路径数量非常大,并且profile与要检查的成员变量的数量成比例增加,那么如何可靠地为所有可能的路径编写测试?

现在,我有两个简单的测试用例:

  1. 其中只有一些成员被设置和检查assertFalse(is_complete(foo))
  2. 其中,所有成员都设置与检查assertTrue(is_complete(foo))

但我有一种感觉,这可能还不够。

亚诺斯

我不确定你说的MxN路径是什么意思在发布的代码中,您拥有与字段 + 1 一样多的路径。

创建一个辅助方法,该方法创建一个profile完整且通过的is_complete

添加一个测试方法来验证is_complete(profile)是否True完整profile

为每个字段添加一个测试方法,步骤如下:

  • 调用 helper 方法来创建一个我们知道会通过的完整配置文件 is_complete
  • 打破被测领域
  • 验证is_complete返回False

您将拥有与字段 + 1 一样多的测试方法。

顺便说一句,而不是这个:

if profile.first_name in (None, ''):

你可以写得更简单:

if not profile.first_name:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何用茉莉花测试具有setTimeout的函数?

具有相同路径但具有不同@RequestParam值的多个端点

一个具有两种不同路径的网址(网址重写)

在Angular 2中将路径转换为具有不同参数的相同路径

Swagger 2.0:具有不同路径但请求和响应相同的多个Path对象

如何同时在两个不同路径的.bat文件中启动2个命令?

如何使用pactjs处理不同环境的不同路径参数

具有不同路径的代理下的Next.js

编译具有相同文件名但具有不同路径的源文件

角| 使用两个具有相同路径的组件

Mongo查找在不同路径下具有特定值的给定字段的出现

如何测试变量是否具有lambda函数?

如何在WAR中公开具有相同路径的两个JAX-RS资源

重复使用具有不同路径值的SVG元素

我如何在symfony2中声明两个动作或具有相同路径

具有不同路径级别的XSLT测试

具有2个MATCH子句的查询有什么作用?与具有2个不同路径的单个MATCH子句的查询有什么不同?

laravel中具有不同参数的不同路径到相同方法

使用递归时如何增加3个不同路径的数字?

XPath测试彼此之间不同路径的属性

如何比较两个不同路径的点(点数组)

如何检查文件夹是否包含具有特定路径的n个文件

如何从Linux中的不同路径运行python程序

如何删除域下不同路径的所有cookie

如何测试返回某些内容并具有副作用的函数?

LexikJWTAuthenticationBundle - 如何授予对不同路径的不同访问权限?

如何将不同路径中的多个文件夹从一个 git 存储库迁移到另一个?

如何使用 C 中的 Unity 单元测试测试具有不同参数的函数?

如何测试 powershell 函数是否具有 cmdletbinding 属性