首页 > 解决方案 > 如何在 python 测试中传递命令行参数

问题描述

我有一个微服务类 MsActionDetector。它从命令行获取一个参数,因为 ms 是在本地和容器内部的 .sh 脚本中启动的。

class MsActionDetector(BaseMicroservice):

    def __init__(self):
        self.config = safe_load(open(sys.argv[1]))
        ....

我想执行集成测试,从而在测试中实例化我的微服务,但这不起作用,因为该类除了命令行参数。我怎样才能做到这一点?python Decorator 是一个解决方案吗?我应该修改我的构造函数吗?

标签: pythonooptestingdecoratorpython-decorators

解决方案


sys.argv是一个小魔法的列表。它是从命令行初始化的,但您可以随意更改它。所以在实例化之前很容易在测试类中将它设置为你想要的值MsActionDetector

sys.argv = ['cmd', 'path/to/file']
msad = MsActionDetector()     # will open path/to/file
...

推荐阅读