Как передать параметры командной строки в тесте Python - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть микросервисный класс MsActionDetector.Он принимает аргумент из командной строки, потому что ms запускается в сценарии .sh, как локально, так и внутри контейнера.

class MsActionDetector(BaseMicroservice):

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

Я хотел бы выполнить интеграционные тесты, таким образом создавая экземпляр моего микросервиса в тесте,но это не работает, потому что класс исключает аргумент командной строки.Как мне этого добиться?Является ли Python Decorator решением проблемы?Должен ли я изменить свой конструктор?

1 Ответ

0 голосов
/ 22 февраля 2019

sys.argv - список с небольшим количеством магии.Он инициализируется из командной строки, но вы можете изменить его по своему желанию.Таким образом, легко установить его на значение, которое вы хотите в тестовом классе, прежде чем создавать экземпляр MsActionDetector:

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