diff --git a/tests/extmod/btree1.py b/tests/extmod/btree1.py
new file mode 100644
index 0000000000000000000000000000000000000000..75405bc4f0407dc81a555c2b392535a286bf8386
--- /dev/null
+++ b/tests/extmod/btree1.py
@@ -0,0 +1,56 @@
+try:
+    import btree
+except ImportError:
+    print("SKIP")
+    import sys
+    sys.exit()
+
+db = btree.open(None)
+db[b"foo3"] = b"bar3"
+db[b"foo1"] = b"bar1"
+db[b"foo2"] = b"bar2"
+db[b"bar1"] = b"foo1"
+
+print(db[b"foo2"])
+try:
+    print(db[b"foo"])
+except KeyError:
+    print("KeyError")
+print(db.get(b"foo"))
+print(db.get(b"foo", b"dflt"))
+
+del db[b"foo2"]
+try:
+    del db[b"foo"]
+except KeyError:
+    print("KeyError")
+
+for k, v in db.items():
+    print((k, v))
+
+print("---")
+for k, v in db.items(None, None):
+    print((k, v))
+
+print("---")
+for k, v in db.items(b"f"):
+    print((k, v))
+
+print("---")
+for k, v in db.items(b"f", b"foo3"):
+    print((k, v))
+
+print("---")
+for k, v in db.items(None, b"foo3"):
+    print((k, v))
+
+print("---")
+for k, v in db.items(b"f", b"foo3", btree.INCL):
+    print((k, v))
+
+print("---")
+for k, v in db.items(None, None, btree.DESC):
+    print((k, v))
+
+print(list(db.keys()))
+print(list(db.values()))
diff --git a/tests/extmod/btree1.py.exp b/tests/extmod/btree1.py.exp
new file mode 100644
index 0000000000000000000000000000000000000000..494eb6a0814923fb05451a72d2a1138be106ecbd
--- /dev/null
+++ b/tests/extmod/btree1.py.exp
@@ -0,0 +1,29 @@
+b'bar2'
+KeyError
+None
+b'dflt'
+KeyError
+(b'bar1', b'foo1')
+(b'foo1', b'bar1')
+(b'foo3', b'bar3')
+---
+(b'bar1', b'foo1')
+(b'foo1', b'bar1')
+(b'foo3', b'bar3')
+---
+(b'foo1', b'bar1')
+(b'foo3', b'bar3')
+---
+(b'foo1', b'bar1')
+---
+(b'bar1', b'foo1')
+(b'foo1', b'bar1')
+---
+(b'foo1', b'bar1')
+(b'foo3', b'bar3')
+---
+(b'foo3', b'bar3')
+(b'foo1', b'bar1')
+(b'bar1', b'foo1')
+[b'bar1', b'foo1', b'foo3']
+[b'foo1', b'bar1', b'bar3']