python - 如何在 python 测试中传递命令行参数
问题描述
我有一个微服务类 MsActionDetector。它从命令行获取一个参数,因为 ms 是在本地和容器内部的 .sh 脚本中启动的。
class MsActionDetector(BaseMicroservice):
def __init__(self):
self.config = safe_load(open(sys.argv[1]))
....
我想执行集成测试,从而在测试中实例化我的微服务,但这不起作用,因为该类除了命令行参数。我怎样才能做到这一点?python Decorator 是一个解决方案吗?我应该修改我的构造函数吗?
解决方案
sys.argv
是一个小魔法的列表。它是从命令行初始化的,但您可以随意更改它。所以在实例化之前很容易在测试类中将它设置为你想要的值MsActionDetector
:
sys.argv = ['cmd', 'path/to/file']
msad = MsActionDetector() # will open path/to/file
...
推荐阅读
- php - 将 preg_match() 结果与 (bool) 一起使用?
- java - Java中的正则表达式问题
- python - selenium.common.exceptions.StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面
- reactjs - React 组件测试:“酶”是测试类组件,“测试库”更多的是功能组件吗?
- c - TIMER0 不执行多个比较匹配寄存器中断请求。(MSP430)
- javascript - 在 console.log 中使用制表符或空格格式化文本 - javascript/typescript
- spring-boot - 尽管来自同一个控制器,但并非所有端点都暴露
- python - Python 和 MySQL - fetchall() 不显示任何结果
- c++ - 如果用户输入不是 int,则 std::cin 不等待用户输入
- c# - 与编辑器 Unity 2D 相比,玩家在构建中的移动速度更快