如何编写一个单元测试,其中每个测试用例都有不同的输入但执行相同的操作?

2024-03-20

我需要为一些 python 类创建一个单元测试。我有一个输入和预期结果的数据库,这些输入和预期结果应该由 UUT 为这些输入生成。

这是我想要做的伪代码:

for i=1 to NUM_TEST_CASES:
    Load input for test case i
    execute UUT on the input and save output of run
    Load expected result for test case i
    Compare output of run with the expected result

我可以使用 unittest 包来实现此目的,还是有一些更好的测试包用于此目的?


一般来说,您描述测试的方式与单元测试很奇怪。通常,单元测试不会从外部文件加载测试数据或其余结果。一般来说,它只是在单元测试中进行硬编码。

这并不是说你的计划行不通。只能说它不典型。

你有两个选择。

  1. (我们所做的)。编写一个小脚本来执行“加载测试用例 i 的输入”和“加载测试用例 i 的预期结果”。使用它来生成所需的单元测试代码。 (我们用Jinja2 http://jinja.pocoo.org/2/从源文件编写 Python 代码的模板。)

    然后删除源文件。是的,删除它们。他们只会让你感到困惑。

    您剩下的是“典型”形式的正确单元测试文件,其中包含测试用例的静态数据和预期结果。

  2. 写你的setUp方法执行“加载测试用例 i 的输入”和“加载测试用例 i 的预期结果”。写你的test练习 UUT 的方法。

它可能看起来像这样。

class OurTest( unittest.TestCase ):
    def setUp( self ):
        self.load_data()
        self.load_results()
        self.uut = ... UUT ...
    def runTest( self ):
        ... exercise UUT with source data ...
        ... check results, using self.assertXXX methods ...

想要运行多次吗?一种方法是做这样的事情。

class Test1( OurTest ):
    source_file = 'this'
    result_file = 'that'

class Test2( OutTest ):
    source_file= 'foo'
    result_file= 'bar'

这将允许unittest主程序查找并运行您的测试。

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

如何编写一个单元测试,其中每个测试用例都有不同的输入但执行相同的操作? 的相关文章

  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 如何使用 openpyxl 对工作簿中的 Excel 工作表/选项卡进行排序

    我需要按字母数字对工作簿中的选项卡 工作表进行排序 我在用openpyxl https openpyxl readthedocs io en default 操作工作表 您可以尝试排序workbook sheets list workboo
  • 行为:如何从另一个文件导入步骤?

    我刚刚开始使用behave http pythonhosted org behave 一个Pythonic BDD框架 使用小黄瓜语法 http docs behat org guides 1 gherkin html 行为需要一个特征 例
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐

  • 将值添加到 DynamicTimeSeriesCollection 中的指定系列

    该程序每秒都会接收数据并将它们绘制在时间序列图表上 然而 一旦我创建了两个系列 我就无法为其添加新的价值 它仅显示一条直线 如何将数据附加到指定的系列 IE YYY 基于此example https stackoverflow com a
  • 使用 OpenCV 级联分类器与交通标志

    我正在尝试检测一些这样的交通标志 https i stack imgur com yOTZb jpg https i stack imgur com yOTZb jpg 我设法隔离了交通标志 目前它始终是圆形的 http image noe
  • 如何获取进程的内存使用百分比?

    使用以下代码 我可以获得给定进程的内存消耗 以 MiB 为单位 def memory usage psutil return the memory usage in MB import psutil process psutil Proce
  • iOS上传.pdf文件

    如何使用 iOS 版 Objective C 上传文件 我真的被困住了 我可以使用 UIImagePickerController 上传图像 但是 pdf doc 文件有这样的功能吗 提前谢谢了 不 没有 假设您的意思是属于 iBooks
  • Yii2 环境文件夹背后的想法是什么以及如何使用它?

    我已经通读过 Yii2 文档好几次了 我也用谷歌搜索 但还没有找到任何有用的东西 问题是我不理解环境文件夹的概念 请让我解释一下 我可以在 Git 中使用分支 用于开发 登台和生产 local conf文件会被 Git 忽略 并且不会以任何
  • 为 cocoapod 依赖项指定预处理器宏,而不分叉它

    我有一个 Xcode 工作区 由Cocoapod对外部库有一些依赖 其中之一 MTDates https github com mysterioustrousers MTDates 延伸NSDate and NSDateComponents
  • Gravatar:如何知道用户是否拥有真实图片

    我已经在我的网站上使用了头像服务 但我想知道用户是否上传了他们的照片 有办法知道这一点吗 构造URL时 使用参数d 404 如果用户未设置图片 这将导致 Gravatar 返回 404 错误而不是图像 如果您使用从 gravitar 站点链
  • 将整数转换为单词

    为了设计数据可视化样式 我希望能够使用单词显示整数 例如 两千一十七 而不是数字 例如2017 作为我正在寻找的示例 这里有一个适用于小标量整数的快速函数 int to words lt function x index lt as int
  • AppFabric 缓存 - 对象的序列化和反序列化要求是什么?

    问题 当缓存类的实例并立即将其从缓存中取出时 我取回了对象 它不为空 但其所有属性 字段均为空或默认值 cacheHelper PutInCache testModuleControlInfoOne mci mci has populate
  • 在 JavaScript 中解析 ISO 8601 日期

    我需要有关将具有以下结构的 ISO 8601 日期转换为 JavaScript 的帮助 提示 CCYY MM DDThh mm ssTZD 我想像这样设置日期格式 January 28 2011 7 30PM EST 我想让这个解决方案尽可
  • Jquery UI 自动完成图像

    我在这段代码中遇到错误 有谁能够帮助我 h4 search h4
  • 使用平均成本基础法计算成本

    我有这个 pandas 数据框 我按 股票代码 升序排列 然后按 日期 和 类型 排序 它表示相对于 股票代码 列中股票的交易 Type Ticker Qty Price Amount TotalQty Date 2020 03 01 Bu
  • 操作员之间的气流和数据传输

    我是 Airflow 新手 对 Airflow 及其处理器有疑问 当处理器产生输出时 如何将该输出作为输入移动到下一个处理器 有一个名为 nifi 的软件 它将中间输出存储到流文件中 据我所知 airflow 中没有这样的软件 那么这是怎么
  • 如何在自己的自定义解串器中使用一些 Jackson 解串器?

    我正在努力解决问题中提到的问题 我需要创建一些自定义反序列化器 它或多或少是从标准反序列化器进行类型转换的 原因是ZonedDateTime正在为我的输入工作 但我不想将类型更改为ZonedDateTime 但保留LocalDateTime
  • keras 指标在训练期间不同

    我已经实现了一个基于 SIM 的自定义指标 当我尝试代码时它可以工作 我已经使用张量和 np 数组实现了它 并且都给出了相同的结果 然而 当我开始拟合模型时 返回的值比加载训练生成的权重并应用相同函数时得到的值要高得多 我的职能是 def
  • 通过 SSH 隧道的 PostgreSQL

    我想使用 RazorSQL 连接到在远程服务器上运行的数据库 我使用以下命令在本地主机上创建 SSH 隧道 ssh L 1111 remote server com 5432 email protected cdn cgi l email
  • 是否可以将目录从 Google Compute Engine 实例复制到我的本地计算机?

    使用 scp 我可以添加 r标志通过 ssh 将目录下载到我的本地计算机 使用时 gcloud compute scp r 它说 r 不是可用的选项 如果没有 r 我会收到一条错误消息 指出我的源路径是一个目录 这意味着我只能下载单个文件
  • 如何通过按钮选择或不选择剑道网格

    我有一个网格 在网格定义中启用了选择模式 selectable true 我需要通过按钮使网格不可选择 我尝试了这个 但它不起作用 disableKendoGrid click function var grid myGrid data k
  • 带有 VB6/asp 错误的 C# COM 对象

    我正在尝试通过 COM 公开 C 类库 以便我可以在经典的 ASP 网站中使用它 我用过 sn k regasm 和 gacutil 我现在能做的就是回显字符串 以类变量作为输入的方法对我不起作用 即我的测试方法 EchoPerson Pe
  • 如何编写一个单元测试,其中每个测试用例都有不同的输入但执行相同的操作?

    我需要为一些 python 类创建一个单元测试 我有一个输入和预期结果的数据库 这些输入和预期结果应该由 UUT 为这些输入生成 这是我想要做的伪代码 for i 1 to NUM TEST CASES Load input for tes