diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 750c194..6a7f4d3 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -47,6 +47,7 @@
 	test_vim9_fails \
 	test_vim9_func \
 	test_vim9_import \
+	test_vim9_python3 \
 	test_vim9_script \
 	test_vim9_typealias
 
@@ -61,6 +62,7 @@
 	test_vim9_fails.res \
 	test_vim9_func.res \
 	test_vim9_import.res \
+	test_vim9_python3.res \
 	test_vim9_script.res \
 	test_vim9_typealias.res
 
diff --git a/src/testdir/test_python2.vim b/src/testdir/test_python2.vim
index ac43e60..de5f607 100644
--- a/src/testdir/test_python2.vim
+++ b/src/testdir/test_python2.vim
@@ -809,6 +809,49 @@
   call AssertException(['let v = pyeval("vim")'], 'E859:')
 endfunc
 
+" Test for py3eval with locals
+func Test_python_pyeval_locals()
+  let str = 'a string'
+  let num = 0xbadb33f
+  let d = {'a': 1, 'b': 2, 'c': str}
+  let l = [ str, num, d ]
+
+  let locals = #{
+        \ s: str,
+        \ n: num,
+        \ d: d,
+        \ l: l,
+        \ }
+
+  " check basics
+  call assert_equal('a string', pyeval('s', locals))
+  call assert_equal(0xbadb33f, pyeval('n', locals))
+  call assert_equal(d, pyeval('d', locals))
+  call assert_equal(l, pyeval('l', locals))
+
+  py << trim EOF
+  def __UpdateDict(d, upd):
+    d.update(upd)
+    return d
+
+  def __ExtendList(l, *args):
+    l.extend(*args)
+    return l
+  EOF
+
+  " check assign to dict member works like bindeval
+  call assert_equal(3, pyeval('__UpdateDict( d, {"c": 3} )["c"]', locals))
+  call assert_equal(3, d['c'])
+
+  " check append lo list
+  call assert_equal(4, pyeval('len(__ExtendList(l, ["new item"]))', locals))
+  call assert_equal("new item", l[-1])
+
+  " check calling a function
+  let StrLen = function('strlen')
+  call assert_equal(3, pyeval('f("abc")', {'f': StrLen}))
+endfunc
+
 " Test for vim.bindeval()
 func Test_python_vim_bindeval()
   " Float
diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim
index 3178cff..5e2b555 100644
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -1027,6 +1027,52 @@
   call AssertException(['let v = py3eval("vim")'], 'E859:')
 endfunc
 
+" Test for py3eval with locals
+func Test_python3_pyeval_locals()
+  let str = 'a string'
+  let num = 0xbadb33f
+  let d = {'a': 1, 'b': 2, 'c': str}
+  let l = [ str, num, d ]
+
+  let locals = #{
+        \ s: str,
+        \ n: num,
+        \ d: d,
+        \ l: l,
+        \ }
+
+  " check basics
+  call assert_equal('a string', py3eval('s', locals))
+  call assert_equal(0xbadb33f, py3eval('n', locals))
+  call assert_equal(d, py3eval('d', locals))
+  call assert_equal(l, py3eval('l', locals))
+  call assert_equal('a,b,c', py3eval('b",".join(l)', {'l': ['a', 'b', 'c']}))
+  call assert_equal('hello', 's'->py3eval({'s': 'hello'}))
+  call assert_equal('a,b,c', 'b",".join(l)'->py3eval({'l': ['a', 'b', 'c']}))
+
+  py3 << trim EOF
+  def __UpdateDict(d, upd):
+    d.update(upd)
+    return d
+
+  def __ExtendList(l, *args):
+    l.extend(*args)
+    return l
+  EOF
+
+  " check assign to dict member works like bindeval
+  call assert_equal(3, py3eval('__UpdateDict( d, {"c": 3} )["c"]', locals))
+  call assert_equal(3, d['c'])
+
+  " check append lo list
+  call assert_equal(4, py3eval('len(__ExtendList(l, ["new item"]))', locals))
+  call assert_equal("new item", l[-1])
+
+  " check calling a function
+  let StrLen = function('strlen')
+  call assert_equal(3, py3eval('f("abc")', {'f': StrLen}))
+endfunc
+
 " Test for vim.bindeval()
 func Test_python3_vim_bindeval()
   " Float
diff --git a/src/testdir/test_pyx2.vim b/src/testdir/test_pyx2.vim
index 7432ceb..781bb41 100644
--- a/src/testdir/test_pyx2.vim
+++ b/src/testdir/test_pyx2.vim
@@ -38,6 +38,49 @@
 endfunc
 
 
+" Test for pyxeval with locals
+func Test_python_pyeval_locals()
+  let str = 'a string'
+  let num = 0xbadb33f
+  let d = {'a': 1, 'b': 2, 'c': str}
+  let l = [ str, num, d ]
+
+  let locals = #{
+        \ s: str,
+        \ n: num,
+        \ d: d,
+        \ l: l,
+        \ }
+
+  " check basics
+  call assert_equal('a string', pyxeval('s', locals))
+  call assert_equal(0xbadb33f, pyxeval('n', locals))
+  call assert_equal(d, pyxeval('d', locals))
+  call assert_equal(l, pyxeval('l', locals))
+
+  py << trim EOF
+  def __UpdateDict(d, upd):
+    d.update(upd)
+    return d
+
+  def __ExtendList(l, *args):
+    l.extend(*args)
+    return l
+  EOF
+
+  " check assign to dict member works like bindeval
+  call assert_equal(3, pyxeval('__UpdateDict( d, {"c": 3} )["c"]', locals))
+  call assert_equal(3, d['c'])
+
+  " check append lo list
+  call assert_equal(4, pyxeval('len(__ExtendList(l, ["new item"]))', locals))
+  call assert_equal("new item", l[-1])
+
+  " check calling a function
+  let StrLen = function('strlen')
+  call assert_equal(3, pyxeval('f("abc")', {'f': StrLen}))
+endfunc
+
 func Test_pyxfile()
   " No special comments nor shebangs
   redir => var
diff --git a/src/testdir/test_pyx3.vim b/src/testdir/test_pyx3.vim
index 5d38420..b34fdcb 100644
--- a/src/testdir/test_pyx3.vim
+++ b/src/testdir/test_pyx3.vim
@@ -37,6 +37,48 @@
   call assert_match(s:py3pattern, split(pyxeval('sys.version'))[0])
 endfunc
 
+" Test for pyxeval with locals
+func Test_python_pyeval_locals()
+  let str = 'a string'
+  let num = 0xbadb33f
+  let d = {'a': 1, 'b': 2, 'c': str}
+  let l = [ str, num, d ]
+
+  let locals = #{
+        \ s: str,
+        \ n: num,
+        \ d: d,
+        \ l: l,
+        \ }
+
+  " check basics
+  call assert_equal('a string', pyxeval('s', locals))
+  call assert_equal(0xbadb33f, pyxeval('n', locals))
+  call assert_equal(d, pyxeval('d', locals))
+  call assert_equal(l, pyxeval('l', locals))
+
+  py3 << trim EOF
+  def __UpdateDict(d, upd):
+    d.update(upd)
+    return d
+
+  def __ExtendList(l, *args):
+    l.extend(*args)
+    return l
+  EOF
+
+  " check assign to dict member works like bindeval
+  call assert_equal(3, pyxeval('__UpdateDict( d, {"c": 3} )["c"]', locals))
+  call assert_equal(3, d['c'])
+
+  " check append lo list
+  call assert_equal(4, pyxeval('len(__ExtendList(l, ["new item"]))', locals))
+  call assert_equal("new item", l[-1])
+
+  " check calling a function
+  let StrLen = function('strlen')
+  call assert_equal(3, pyxeval('f("abc")', {'f': StrLen}))
+endfunc
 
 func Test_pyxfile()
   " No special comments nor shebangs
diff --git a/src/testdir/test_vim9_python3.vim b/src/testdir/test_vim9_python3.vim
new file mode 100644
index 0000000..697b368
--- /dev/null
+++ b/src/testdir/test_vim9_python3.vim
@@ -0,0 +1,17 @@
+
+source check.vim
+import './vim9.vim' as v9
+CheckFeature python3
+
+def Test_python3_py3eval_locals()
+  var lines =<< trim EOF
+    var s = 'string'
+    var d = {'s': s}
+    assert_equal('string', py3eval('s', {'s': s}))
+    py3eval('d.update({"s": "new"})', {'d': d})
+    assert_equal('new', d['s'])
+  EOF
+  v9.CheckDefAndScriptSuccess(lines)
+enddef
+
+" vim: shiftwidth=2 sts=2 expandtab
