diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 44296f0..3ff1450 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -188,23 +188,25 @@
 		to run tests. Only to be used for testing Vim!
 		The override is enabled when {val} is non-zero and removed
 		when {val} is zero.
-		Current supported values for name are:
+		Current supported values for {name} are:
 
-		name	     effect when {val} is non-zero ~
-		redraw       disable the redrawing() function
-		redraw_flag  ignore the RedrawingDisabled flag
+		{name}	     effect when {val} is non-zero ~
+		autoload     `import autoload` will load the script right
+			     away, not postponed until an item is used
 		char_avail   disable the char_avail() function
-		starting     reset the "starting" variable, see below
 		nfa_fail     makes the NFA regexp engine fail to force a
 			     fallback to the old engine
 		no_query_mouse  do not query the mouse position for "dec"
 				terminals
 		no_wait_return	set the "no_wait_return" flag.  Not restored
 				with "ALL".
-		ui_delay     time in msec to use in ui_delay(); overrules a
-			     wait time of up to 3 seconds for messages
+		redraw       disable the redrawing() function
+		redraw_flag  ignore the RedrawingDisabled flag
+		starting     reset the "starting" variable, see below
 		term_props   reset all terminal properties when the version
 			     string is detected
+		ui_delay     time in msec to use in ui_delay(); overrules a
+			     wait time of up to 3 seconds for messages
 		uptime 	     overrules sysinfo.uptime
 		ALL	     clear all overrides ({val} is not used)
 
diff --git a/src/globals.h b/src/globals.h
index f04b29e..94da8e0 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1643,6 +1643,7 @@
 EXTERN int  ui_delay_for_testing INIT(= 0);
 EXTERN int  reset_term_props_on_termresponse INIT(= FALSE);
 EXTERN long override_sysinfo_uptime INIT(= -1);
+EXTERN int  override_autoload INIT(= FALSE);
 
 EXTERN int  in_free_unref_items INIT(= FALSE);
 #endif
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 553ef8f..2e57fe2 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1288,6 +1288,42 @@
   &rtp = save_rtp
 enddef
 
+def Test_import_autoload_override()
+  mkdir('Xdir/autoload', 'p')
+  var save_rtp = &rtp
+  exe 'set rtp^=' .. getcwd() .. '/Xdir'
+  test_override('autoload', 1)
+
+  var lines =<< trim END
+      vim9script autoload
+
+      g:loaded_override = 'true'
+      export var variable = 'bla'
+      export def Function(): string
+        return 'bla'
+      enddef
+  END
+  writefile(lines, 'Xdir/autoload/override.vim')
+
+  lines =<< trim END
+      vim9script
+
+      import autoload 'override.vim'
+      assert_equal('true', g:loaded_override)
+
+      def Tryit()
+        echo override.doesNotExist
+      enddef
+      defcompile
+  END
+  CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
+
+  test_override('autoload', 0)
+  unlet g:loaded_override
+  delete('Xdir', 'rf')
+  &rtp = save_rtp
+enddef
+
 def Test_autoload_mapping()
   mkdir('Xdir/autoload', 'p')
   var save_rtp = &rtp
diff --git a/src/testing.c b/src/testing.c
index eef5e0d..3482682 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -1055,6 +1055,8 @@
 	    reset_term_props_on_termresponse = val;
 	else if (STRCMP(name, (char_u *)"uptime") == 0)
 	    override_sysinfo_uptime = val;
+	else if (STRCMP(name, (char_u *)"autoload") == 0)
+	    override_autoload = val;
 	else if (STRCMP(name, (char_u *)"ALL") == 0)
 	{
 	    disable_char_avail_for_testing = FALSE;
diff --git a/src/version.c b/src/version.c
index 728d2b8..782a64a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4087,
+/**/
     4086,
 /**/
     4085,
diff --git a/src/vim9script.c b/src/vim9script.c
index baf2019..2038c78 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -496,6 +496,9 @@
 	    if (si->sn_autoload_prefix == NULL)
 		si->sn_autoload_prefix = get_autoload_prefix(si);
 	    res = OK;
+	    if (override_autoload && si->sn_state == SN_STATE_NOT_LOADED)
+		// testing override: load autoload script right away
+		(void)do_source(si->sn_name, FALSE, DOSO_NONE, NULL);
 	}
 	else
 	    res = FAIL;
