def test_parse_client_args_no_addr(self): """ Шаманство ниже требуется, чтобы отловить именно argparse.ArgumentError: argument -a: expected one argument unittest затирает стэктрейс и мы видим только конечный эксепшн (SystemExit). Багу знают: https://bugs.python.org/issue24959 Есть пул-реквест на фикс, но он пока открыт (на 20.02.2022) """ # ioerr - не обязателен # без него лезут описания ошибок из ArgumentError ioerr = StringIO() with contextlib.redirect_stderr(ioerr): with self.assertRaises(SystemExit) as e: server.parse_srv_args() e_context = e.exception.__context__ # <argparse.ArgumentError> conditions = [ e_context.argument_name == '-a', e_context.message == 'expected one argument', ] self.assertTrue(all(conditions))
def test_parse_client_args_no_port(self): ioerr = StringIO() with contextlib.redirect_stderr(ioerr): with self.assertRaises(SystemExit) as e: server.parse_srv_args() e_context = e.exception.__context__ # <argparse.ArgumentError> conditions = [ e_context.argument_name == '-p', e_context.message == 'expected one argument', ] self.assertTrue(all(conditions))
def test_parse_client_args_custom_port(self): test_args = server.parse_srv_args() self.assertEqual(test_args.p, 7000)
def test_parse_client_args_custom_addr(self): test_args = server.parse_srv_args() self.assertEqual(test_args.a, '28.28.28.28')
def test_parse_client_args_default_port(self): test_args = server.parse_srv_args() self.assertEqual(test_args.p, DEFAULT_PORT)
def test_parse_client_args_default_addr(self): test_args = server.parse_srv_args() self.assertEqual(test_args.a, '')