Custom form using custom template, submit the form don't call its validate and submit handlers
You need "base hook" in there, I believe.

Here's an example:

/**
 * Implements hook_theme().
 */
function formcustomtemplate_theme() {
  return array(
    'form__my_form_test' =&gt; array(
      'render element' =&gt; 'form',
      'template' =&gt; 'form--myformtest-form',
      'base hook' =&gt; 'form',
    ),
  );
}


If you are using a custom theme, and you don't need the template in your module, the approach of creating a new theme hook for your custom form is unnecessary.
Rather than create a new theme hook, use hook_theme_suggestions_alter in your theme:

/**
 * Implements hook_theme_suggestions_alter().
 */
function mytheme_theme_suggestions_alter(array &amp;$suggestions, array $variables, $hook) {

  if ($hook == 'form' &amp; !empty($variables['element']['#theme'])) {
    $suggestions[] = 'form__' . $variables['element']['#theme'][0];
  }

}


then create the appopriate template in your theme.

then to see the theme suggestions output to the page, turn on twig debugging:

https://drupalize.me/blog/201405/lets-debug-twig-drupal-8

You'll see template suggestions in the markup:

&lt;!-- FILE NAME SUGGESTIONS:
   * form--myformtest-form.html.twig
   x form.html.twig
--&gt;


You can see that it's not yet picking up your template, so create a template file by copying the form.html.twig and renaming it.

To check where Drupal is looking for templates using the "form" hook, you can print out the theme registry from hook_theme_registry_alter:

 "form" =&gt; array:6 [▼
    "template" =&gt; "form"
    "path" =&gt; "themes/custom/mycustomtheme/templates/form"
    "type" =&gt; "theme_engine"
    "theme path" =&gt; "themes/custom/mycustomtheme”
    "render element" =&gt; "element"
    "preprocess functions" =&gt; array:4 [ …4]


This lets you know that you need to put the template in that directory.