如何对命令行参数进行单元测试?

2024-03-07

我正在尝试向 Python 提供命令行参数unittest并面临一些问题。 我在互联网上搜索并找到了一种提供参数的方法

unittest.main(argv=[myArg])

问题是这对于单个命令行参数工作正常,但对于多个参数则失败。

unittest.main(argv=[myArg1, myArg2, myArg3])

上面的调用失败并出现以下错误:

  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 816, in __init__
    self.parseArgs(argv)
  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 843, in parseArgs
    self.createTests()
  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 849, in createTests
    self.module)
  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 613, in 
    loadTestsFromNames suites = [self.loadTestsFromName(name, module) 
    for name in names]
  File "/opt/python2.6.6/lib/python2.6/unittest.py", line 584, in 
    loadTestsFromName parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'admin'

对此进行了深入研究,发现Pythonunittest处理使用发送的所有内容argv作为要运行的测试用例。

如果仍然有一种方法可以为我的单元测试用例提供多个论证,请告诉我。我想覆盖一些硬编码值,如 IP 地址、测试用例标签等,并本质上从主测试脚本中运行此测试脚本。

提前致谢。


为什么不在运行之前取出命令行参数unittest.main,然后给它[sys.argv[0]] for its argv?

就像是:

if __name__ == '__main__':
   # do stuff with sys.argv
   unittest.main(argv=[sys.argv[0]])

请注意,当给出argv=None, unittest.main实际上将此作为要解析的信号sys.argv. unittest.main需要至少一个argv用作程序名称的元素。所以避免None, [sys.argv[0]]是一个很好的值,因为它认为它没有命令行参数。


附:我刚刚注意到你的最后一句话。如果是这种情况 - 不要使用命令行参数。您的“主”测试脚本应该只使用unittest的 API 到load模块的测试用例,根据需要定制它们。

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

如何对命令行参数进行单元测试? 的相关文章

随机推荐

  • 希伯来语问题 - MySql,c#

    我在将希伯来语字符串插入 MySql 时遇到问题 介绍 我将MySql设置为Utf8 我将表设置为字符集 utf8 排序规则为 uft8 general ci 我将连接字符串设置为 Server 数据库 Uid Pwd 字符集 utf8 我
  • 打包一个可运行的 JPA jar,将 persistence.xml 放在外面

    我想将我的 jpa swing 项目导出到可运行的 jar 中 但我希望 persistence xml 位于 jar 之外而不是打包在里面 这样我就可以更改它 而无需在每次配置后再次导出 jar 根据 JPA 规范 persistence
  • ios - 多个导航控制器之间的导航

    我试图理解使用 和不使用 NavigationController 在 ViewController 之间导航的行为 并且在阅读文章和文档时我误解了一些事情 所以我决定问他们 主要问题是 如果故事板中有多个导航控制器并且想要从一个导航控制器
  • cython 做了哪些 numpy 优化?

    我有点惊讶地发现 fast ops c pyx cimport cython cimport numpy as np cython boundscheck False turn off bounds checking for entire
  • C++ 打印指针的值

    我有一个双指针数组 但每次我尝试打印其中一个值时 都会打印地址 如何打印实际值 cout 有人知道吗 如果它确实是一个 初始化的 双指针数组 即 double arr Initialize individual values 所有你需要的是
  • UIDatePicker设置最小和最大小时

    如何设置 UIDatePicker 的最小和最大小时 到底有可能吗 我知道如何设置最小和最大日期 datePicker setMinimumDate 今天 datePicker setMaximumDate nextMonthDay 我想要
  • 如何进行多对多 Django 查询来查找具有 2 个给定作者的书籍?

    我有一个查询 需要使用 ID 精确过滤 2 位作者 理论上 Book objects filter author id 1 author id 2 这是不可能的 我怎么解决这个问题 干杯 米奇 一开始并不直观 但答案就在我们面前 Book
  • knex.js 查询“承诺”何时执行/解析?

    对于正常的承诺 一旦当前代码停止 承诺就会尽快解决 考虑以下伪代码 const p SomePromiseDoingLoad calculatethings await sleepPromise during sleep the promi
  • VB:游戏之上的应用

    我想编写一个应用程序 在全屏游戏上绘制某个视觉对象 例如半透明三角形 该游戏具有 强置顶 属性 因为它涵盖了所有其他分类为 置顶 的应用程序 我需要我的应用程序是最上面的应用程序 并且始终处于焦点 而不影响后面游戏的顺利运行 如何才能有效地
  • 查找 Maven Google App Engine 项目的原型

    我正在使用 Eclipse 和 m2eclipse 插件为 Google App Engine 创建一个新的 Java 项目 创建新的 Maven 项目时 Eclipse 找不到原型 com google appengine archety
  • 由 javascript 更新的 asp.net mvc 禁用文本框不会发布新值

    我正在使用强类型模型来表达我的观点 我有一个禁用的文本框 我使用 javascript 更新其值 文本框是使用这个渲染的 这将呈现一个文本框 其中 NAME 和 ID 为 TotalAmount TotalAmount 也是我的模型上绑定到
  • cx_Freeze 后 Paramiko 无法正常工作?

    所以我编写了这段代码 我使用 Paramiko 通过 SSH 连接到计算机 脚本正常工作 但是当我使用 cx Freeze 将其转换为 exe 时 程序在 self ssh load system host keys 处停止工作 所以我从脚
  • 将表示列表的字符串转换为实际的列表对象[重复]

    这个问题在这里已经有答案了 我有一个代表列表的字符串 22 33 36 41 46 49 56 72 85 92 95 98 107 118 120 123 124 126 127 130 149 157 161 171 174 177 1
  • flutter中的webview是否缓存网页?

    我想缓存在 flutter webview 中显示的网页 以便提高性能 无需重新加载页面 可以用吗 我可以实施吗 flutter inappwebview 前 flutter inappbrowser 有参数cacheEnabled默认为
  • 如何从 Google Places API 获取地点描述

    我正在尝试使用 Google 地点 API 来获取某些地点的信息 我有一个 来自谷歌搜索的示例 这是我试图找到的 我认为 Places API 文本搜索的 类型 字段将包含它 但该文本似乎不同 并且不在提供的选项列表中 如果有人可以提供一些
  • .Net 中的 Oracle 连接池

    我们有一个使用 Oracle 数据库的系统 有人问我系统是否使用连接池 但我不确定 我们正在使用Oracle DataAccess Client OracleConnection 在阅读该主题时 我发现连接字符串中的连接池设置为 true
  • 在vagrant box上创建虚拟主机

    我正在尝试设置一个基于 Chef 提供的 vagrant 的开发环境 我使用 Apache 使用 Chef 创建了一个环境 并且可以通过端口转发从我的主机访问 Web 服务器 我想让我的流浪盒包含多个虚拟主机 并且通过共享文件夹 我将定义不
  • spring-boot oauth2 拆分授权服务器和资源服务器

    我试图在 spring boot 中将资源服务器与授权服务器分开 我有两个单独运行的不同应用程序 在授权服务器中 我可以从 oauth token 获取不记名令牌 但是当我尝试访问资源 在标头中发送令牌 时 我收到无效令牌错误 我的目的是使
  • AZURE Active Directory - 服务主体和企业应用程序之间有什么区别?

    我经常对 Azure AD 中的三个主题感到困惑 服务负责人 企业应用 应用程序注册 有什么不同 我可以轻松进入 应用程序注册 并注册一个 应用程序 而该 应用程序 甚至不需要存在 它所需要的只是一个 URL 也可以是完全随机的 然后 此应
  • 如何对命令行参数进行单元测试?

    我正在尝试向 Python 提供命令行参数unittest并面临一些问题 我在互联网上搜索并找到了一种提供参数的方法 unittest main argv myArg 问题是这对于单个命令行参数工作正常 但对于多个参数则失败 unittes