Итак, проблема в том, что вы объявили
PARSER.add_argument('--arg3', default='arg3', type=str)
в глобальном объеме внутри MainScript.py
. Это означает, что эта строка кода будет выполняться каждый раз, когда вы импортируете ее, как вы делаете в Test_Cases.py
, поэтому, почему вы получаете ошибку конфликта, вы добавляете arg 3 в argparse дважды.
Самое простое решение - переместить PARSER.add_argument('--arg3', default='arg3', type=str)
в вашу функцию main()
, так как она будет вызвана только один раз.
def main():
PARSER.add_argument('--arg3', default='arg3', type=str)
pytest.main(['./Test_Cases.py', '-v'])
Но при этом возникает другая проблема, вытекающая из вашего множественного определения get_args()
. Когда вы вызываете get_args()
перед вашим main()
, он имеет только два определенных аргумента из parent.py
, поэтому в нем отсутствует arg3. Если вы переместите вызов на ваш main()
или, по крайней мере, после того, как вам позвонят на main()
, он будет работать.
Лично я просто удалил определение и вызов get_args()
из MainScript.py
, и он работал просто отлично.