unittest 测试用例中的重复代码

2024-02-29

我有一个如下所示的测试用例:

def MyTestCase(unittest.Testcase):
  def test_input01(self):
    input = read_from_disk('input01')
    output = run(input)
    validated_output = read_from_disk('output01')
    self.assertEquals(output, validated_output)
  def test_input02(self):
    input = read_from_disk('input02')
    # ...
  # and so on, for 30 inputs, from input01 to input30

现在,我知道测试代码可能有点重复,因为简单性比简洁性更重要。但这变得非常容易出错,因为当我决定更改此处使用的某些函数的签名时,我必须在所有 30 个位置进行更改。

我可以将其重构为已知输入的循环,但我确实希望每个输入保持单独的测试,所以我认为我应该制作test_inputxx方法。

我究竟做错了什么?


编写一个辅助函数来删除测试用例中的重复:

def MyTestCase(unittest.Testcase):
  def run_input_output(self, suffix):
    input = read_from_disk('input'+suffix)
    output = run(input)
    validated_output = read_from_disk('output'+suffix)
    self.assertEquals(output, validated_output)

  def test_input01(self): self.run_input_output('01')
  def test_input02(self): self.run_input_output('02')
  def test_input03(self): self.run_input_output('03')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unittest 测试用例中的重复代码 的相关文章

随机推荐

  • 如何从Google代码库调试源代码

    我想从谷歌代码存储库调试以下源代码 http code google com p rx 我的问题是 我无法找到一个合适的IDE 可以将源代码中的所有子文件夹视为一个完整的项目 我尝试过 netbeans C codeblocks eclip
  • VBA数据层错误处理

    我有一些遗留的 Excel 文件 其中包含大量对存储过程和数据库连接的调用 所有这些都以旧方式使用记录集完成 因为在 VBA 中没有像 NET 中那样的 try catch finally 概念 是否有任何最佳实践可以应用以获得更可靠的数据
  • 在日期字段上使用 max 的 JPQL 查询

    我需要查询以从一组记录中查找具有最新日期的记录 我尝试过很多东西 最近的一个是这样的 select msg msg createdDate from ImportedMessage msg where msg siteId 1 and ms
  • 不破坏html C#的子字符串

    大家好 我正在尝试获取已在所见即所得编辑器中输入的描述并获取它的子字符串 i e This is some span style font weight bold text span 如果我只是子串并添加 我想在不破坏html的情况下限制一
  • 将发布 dll 与调试主应用程序 exe 混合

    假设我有一个 Visual C 应用程序 它有一个主可执行文件和许多 dll 我有2个配置发布和调试 我只是想知道使用 mix 可能会产生什么效果 我的意思是使用带有发布主 exe 的调试 dll 或带有发布 dll 的调试 exe Tha
  • Angular - 单击菜单项后隐藏侧边栏菜单

    我创建了一个侧边栏菜单 但单击菜单项后无法隐藏该菜单 我按照以下示例https blog thecodecampus de angular 2 animate creating sliding side navigation https b
  • 如何在 Objective C 中对 NSMutableArray 进行排序 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发计时器应用程序 我有一个数
  • 正则表达式用 HTML 标签包裹字符串

    我有一个文本区域 其中有很多行 如下所示 1 stuff 2 more stuff 123 even more stuff 我正在使用正则表达式来查找 num 模式 0 9 我想让它们成为锚标记 例如 a href 123 123 a 但它
  • 如何在数据库中插入时间戳? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到此错误 java lang IllegalArgumentException 时间戳格式必须为 yyyy mm dd 时 分
  • 两个 pandas 数据帧之间的欧几里德距离

    我有两个数据框 df1形式的 user id x coord y coord 214 55 2 22 1 214 55 2 22 1 214 55 2 22 1 and df2 形式相同 但用户不同 user id x coord y co
  • 无法安装mbstring php冲突

    我正在尝试使用 php 5 6 安装 php mbstring 并收到此错误 Error php56w common conflicts with php common 5 4 45 3 el6 remi x86 64 You could
  • 当 JavaFX 中选定的选项卡更改时如何聚焦特定节点?

    我想将焦点设置到选项卡内容中的特定节点 我添加了一个变化监听器 to 选定的项目属性如下 假设该类包含一个名为第二个节点类型的Node tabPane getSelectionModel selectedItemProperty addLi
  • html5数据属性不区分大小写吗?

    我最近注意到chrome转换数据属性data 为小写 e g div div 将被转换为 div div 在 Chrome 开发工具中 当我用 javascript 调用该属性时 console log e hasAttribute dat
  • Jekyll 如何处理 _posts/subdir 中的帖子

    Jekyll Bootstrap 项目在目录中有一篇示例博客文章 posts core samples 我假设 子目录中的帖子 文件 的处理方式与根目录中的帖子相同 它是否正确 如果是这样 我将添加一个 stage 子目录 将其排除 这样我
  • 为什么不使用记录的创建时间作为主键?

    我有一个表 其中有一个自动递增的 PK 和creation date 字段 这是unix 时间戳 我想知道为什么不丢失自动递增字段并使用创建日期字段作为 PK 因为它是唯一的 我使用 1 1000 秒的精度 对于 我正在删除一个索引行 反对
  • ffmpeg - 我可以将音频通道绘制为图像吗?

    我想知道是否可以使用 ffmpeg 将视频或音频文件的音频通道绘制为图像 或者是否有其他工具可以在 Win2k8 x64 上执行此操作 我将这样做作为用户上传视频或音频文件后编码过程的一部分 我使用 ColdFusion 10 来处理上传并
  • 安装 phpredis MAC OSX

    任何人都可以帮我在 MAC OSX 中安装 php redis 吗 brew install php redis 不工作 pecl install php redis 也不起作用 无效的包名称 包文件 php redis 自制错误 自制错误
  • 在 Postgres 中收集递归 JSON 键

    我有 JSON 文档以 JSON 数据类型 Postgres 9 3 存储在 Postgres 中 并且我需要递归地收集树中的键名称 例如 给定这个 JSON 树 files folder file1 property blah file2
  • 更改 EF4 中的数据库表名称(实体框架 4)

    有谁知道如何更改 EF4 实体框架 4 中实体的映射数据库表 稍后编辑 我想我已经在模型浏览器中找到了定义表名称的位置 但它们的名称是只读的 因此无法使用设计器对其进行编辑 另外 在 xml 模式中没有对表名称的引用 根据我的搜索 如果您只
  • unittest 测试用例中的重复代码

    我有一个如下所示的测试用例 def MyTestCase unittest Testcase def test input01 self input read from disk input01 output run input valid