设置主函数测试的命令行参数

2023-12-30

我在 python 中有一个获取命令行参数的 main() 函数。 有没有办法让我为此函数编写 pytest 测试并在代码中定义参数?

e.g.

def main():
    # argparse code
    args, other = arg_parser.parse_known_args()
    return args.first_arg


def test_main():
    res = main() # call with first_arg = "abc"
    assert(res == "abc")

添加到以前的答案,而不是修改sys.argv使用上下文管理器会更安全,它可以掩盖和保护底层对象。一个例子是

with unittest.mock.patch('sys.argv', ['program_name', '--option1', 'inputFile']):
    main()

这只适用于 python3。对于 python2 来说Mock http://www.voidspace.org.uk/python/mock/index.html图书馆就可以解决这个问题。

我在另一个 stackoverflow 帖子上找到了这个解决方案here https://stackoverflow.com/questions/18668947/how-do-i-set-sys-argv-so-i-can-unit-test-it#comment55008523_27765993.

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

设置主函数测试的命令行参数 的相关文章

随机推荐

  • Django:带条件的 ModelForm

    我正在尝试创建一个表单变量 默认玩家等级为 0 他可以更改名字 当他达到1级后 他可以更改名字和头像 当他达到3级时 他可以更改名字 头像和职业 ETC 模型 py class Player models Model level model
  • 是否允许使用多个非类型模板参数包?

    temp param p11 说 在 N4527 中 函数模板的模板参数包后面不应跟有另一个模板参数 除非该模板参数可以从函数模板的参数类型列表推导出来或具有默认参数 在这样的背景下non type模板参数包 不能有默认参数 那么到底需要为
  • C# 图表从数据表添加多个系列

    我从数据库中检索了几个大小各异的数据表 这 2 个中的一个只是一个示例 See the structure here I managed to create the 2 different series and have them show
  • 使用流添加到 azure blob 存储

    我正在尝试添加一个IFormFile通过 net core Web API 接收到 azure blob 存储 这些是我设置的属性 static internal CloudStorageAccount StorageAccount gt
  • C# 泛型的反约束

    灵感来自Phil Haack 对 null 或空合并的尝试 http haacked com archive 2010 06 16 null or empty coalescing aspx 我正在尝试编写一些扩展方法string对象 以及
  • 使用 jQuery/ajax 进行基本身份验证

    我正在尝试创建基本身份验证页面 其中我的表单包含三个字段 username password 拨款类型 提交表单时 我只想以 JSON 格式在 HTML 上显示服务器返回的响应 我对 Web 服务的 AJAX 调用也需要授权要设置的标题 但
  • 如何使用 Java 正则表达式捕获并重用匹配项?

    我试图记住在 Java 中进行查找替换正则表达式匹配的正确符号 说我有绳子 String s My name is Eric and I have a bee called Eric and a fish called Wanda 我想做如
  • 如何设置PyQt5 Qtimer以指定的时间间隔更新?

    我想根据 15 FPS 的帧速率更新 Qtimer 所以我的 def update 每 0 06 秒接收一个信号 你能帮助我吗 我在下面附加了一个代码示例 其中我的 setInterval 输入是 1 15 但我不知道这是否是正确的方法 谢
  • Pg-promise 性能提升:冲突

    我正在尝试遵循 pg promise 库作者推荐的性能模式here https github com vitaly t pg promise wiki Performance Boost 基本上 Vitaly 建议使用插入来这样做 var
  • 将非泛型集合转换为泛型集合的最佳方法

    将非泛型集合转换为泛型集合的最佳方法是什么 有没有办法 LINQ 呢 我有以下代码 public class NonGenericCollection CollectionBase public void Add TestClass a L
  • 将 DateTime 序列化为特定格式的 XML .net

    我有大量自动生成的类 这些类使用 NET XmlSerializer 序列化为 XML 或从 XML 反序列化 其中一些类包含 DateTime 属性 我有一个序列化的要求all使用特定格式的 DateTime 属性 例如 u System
  • 如何在 x86 汇编中调用 fgets?

    根据的文档fgets http www cplusplus com reference clibrary cstdio fgets 该函数采用三个参数 char 保存输入的字符串 int 一个整数 表示要读取的最大字符数 FILE a FI
  • 为什么编译后代码注入比预编译代码注入更好?

    所以我们都知道 C 没有类似 C 的宏预处理器 并且有一个很好的线程解释了为什么here https stackoverflow com questions 1369725 why arent there macros in c 但现在 A
  • 基于 Flex 的 CSS 转换在 FF 中不起作用

    在 Firefox 上使用 CSS 过渡和 flex basis 时 截至撰写本文时为 28 第一次过渡无法顺利进行 然而 随后的过渡正如预期的那样顺利 这是我提到的问题的一个很好的演示 http dev opera com static
  • 路由器防护跳过位置更改

    我们正在使用 Angular 12 并尝试跳过路由器防护内的位置更改 即使skipLocationChange true 位置也总是会发生变化 import Injectable from angular core import Activ
  • Soundcloud API 错误 NS_ERROR_DOM_BAD_URI:访问受限 URI 被拒绝 (JavaScript)

    我刚刚熟悉 Soundcloud 的 API 但遇到了一些麻烦 据我所知 我所需要的一切SC initialize是一个client id 我已经使用了 Code Academy 的教程来入门 非常棒 现在我实际上正在尝试实现一些东西 但遇
  • System.TimeoutException:使用 CompositeServerSelector 选择服务器 30000 毫秒后发生超时

    我有以下申请 应用部署图 https i stack imgur com kG9Ih jpg A 应用程序 A 是在 IIS 7 5 中托管的 net wcf 服务 使用在 net 4 5 中编译的 c mongodriver 2 2 4
  • Python 如何将字符串的第n个字母大写

    我试过这个 将字符串大写 https stackoverflow com questions 352478 capitalize a string 有人可以提供一个简单的脚本 片段作为指导吗 Python 文档有capitalize htt
  • 如何使用 Django 的“with”模板标签保存比较结果?

    我想在 django 模板中创建新变量 它将有一个比较值 obj site profile default role obj 不幸的是 这些代码都不起作用 with obj site profile default role obj as
  • 设置主函数测试的命令行参数

    我在 python 中有一个获取命令行参数的 main 函数 有没有办法让我为此函数编写 pytest 测试并在代码中定义参数 e g def main argparse code args other arg parser parse k