diff --git a/tests/extmod/btree1.py b/tests/extmod/btree1.py
index 2127554db4e95009f323d8a5fd8bd74de2f1a7cb..59638ef0a467bbe7648c88cedb48cec69aec1129 100644
--- a/tests/extmod/btree1.py
+++ b/tests/extmod/btree1.py
@@ -4,8 +4,7 @@ try:
     import uerrno
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 #f = open("_test.db", "w+b")
 f = uio.BytesIO()
diff --git a/tests/extmod/framebuf1.py b/tests/extmod/framebuf1.py
index 990b0b120dfe84630be9acb51403b9ddcc4f548f..2c13665228a6ad9fb898053c8883a65117244f7f 100644
--- a/tests/extmod/framebuf1.py
+++ b/tests/extmod/framebuf1.py
@@ -2,8 +2,7 @@ try:
     import framebuf
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 w = 5
 h = 16
diff --git a/tests/extmod/framebuf16.py b/tests/extmod/framebuf16.py
index 3aa1d34def297670fa8a0e1b3e0cc4a9edfb3804..fe81f7f93f8c020ce1da420abd8b92ac7a3aecd7 100644
--- a/tests/extmod/framebuf16.py
+++ b/tests/extmod/framebuf16.py
@@ -2,8 +2,7 @@ try:
     import framebuf
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 def printbuf():
     print("--8<--")
diff --git a/tests/extmod/framebuf4.py b/tests/extmod/framebuf4.py
index 641f5bfc5934cacb19b82b8b1aaecac0bcaa24cd..8358fa55b9f2b83e93d5f7f4cf4c6799f3946986 100644
--- a/tests/extmod/framebuf4.py
+++ b/tests/extmod/framebuf4.py
@@ -2,8 +2,7 @@ try:
     import framebuf
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 def printbuf():
     print("--8<--")
diff --git a/tests/extmod/machine1.py b/tests/extmod/machine1.py
index e0c56116842b5437e32762bfba0a868effffd578..6ff38cc05179d505e808c88ffc4928840f6b67b8 100644
--- a/tests/extmod/machine1.py
+++ b/tests/extmod/machine1.py
@@ -8,8 +8,7 @@ try:
     machine.mem8
 except:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 print(machine.mem8)
 
diff --git a/tests/extmod/machine_pinbase.py b/tests/extmod/machine_pinbase.py
index 5e82823ec0b5c80ebfa8a7a476e02ca10b68ce7d..e91775504d59aaad2a84a8682b9602b117ad2063 100644
--- a/tests/extmod/machine_pinbase.py
+++ b/tests/extmod/machine_pinbase.py
@@ -6,8 +6,7 @@ try:
     machine.PinBase
 except AttributeError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 
 class MyPin(machine.PinBase):
diff --git a/tests/extmod/machine_pulse.py b/tests/extmod/machine_pulse.py
index 6491b54090d2bcdc27bd185c2abd42872399c59d..d525974e0c2a9b3ecd1f15a2221262e6e69d4d9e 100644
--- a/tests/extmod/machine_pulse.py
+++ b/tests/extmod/machine_pulse.py
@@ -7,8 +7,7 @@ try:
     machine.time_pulse_us
 except AttributeError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 
 class ConstPin(machine.PinBase):
diff --git a/tests/extmod/machine_signal.py b/tests/extmod/machine_signal.py
index 96b8f43c735bec9e7b1c579e7a64e038818c54d5..53f4f5890c3dd086de0e2b1826af609eeb2572e3 100644
--- a/tests/extmod/machine_signal.py
+++ b/tests/extmod/machine_signal.py
@@ -9,8 +9,7 @@ try:
     machine.Signal
 except AttributeError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 class Pin(machine.PinBase):
     def __init__(self):
diff --git a/tests/extmod/time_ms_us.py b/tests/extmod/time_ms_us.py
index 2078f1bb539583e3bd67902a4ee2fd6c41f3fa55..31f07d31ba21ad98ad15fd0fc36753b5d8b03948 100644
--- a/tests/extmod/time_ms_us.py
+++ b/tests/extmod/time_ms_us.py
@@ -1,10 +1,9 @@
-import sys
 import utime
 try:
     utime.sleep_ms
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 utime.sleep_ms(1)
 utime.sleep_us(1)
diff --git a/tests/extmod/ubinascii_a2b_base64.py b/tests/extmod/ubinascii_a2b_base64.py
index 58eb0b50b62655f7b7c6c1c8e5b72c2de5da5d82..b35f26591096242ba046285e21263a5aaf32dc24 100644
--- a/tests/extmod/ubinascii_a2b_base64.py
+++ b/tests/extmod/ubinascii_a2b_base64.py
@@ -4,9 +4,8 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 print(binascii.a2b_base64(b''))
 print(binascii.a2b_base64(b'Zg=='))
diff --git a/tests/extmod/ubinascii_b2a_base64.py b/tests/extmod/ubinascii_b2a_base64.py
index 1c0c30311d8831481dab6940ed9dbb33ec58232a..f4bb69fe0c92a24a7b853c01548f359b04e47b19 100644
--- a/tests/extmod/ubinascii_b2a_base64.py
+++ b/tests/extmod/ubinascii_b2a_base64.py
@@ -4,9 +4,8 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 print(binascii.b2a_base64(b''))
 print(binascii.b2a_base64(b'f'))
diff --git a/tests/extmod/ubinascii_crc32.py b/tests/extmod/ubinascii_crc32.py
index b82c44d6bfc7feec16b02d9a4352f8d231522231..89664a9b36517db9d750cd5ae36e8e0bdd7ab96b 100644
--- a/tests/extmod/ubinascii_crc32.py
+++ b/tests/extmod/ubinascii_crc32.py
@@ -4,16 +4,14 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     binascii.crc32
 except AttributeError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 print(hex(binascii.crc32(b'The quick brown fox jumps over the lazy dog')))
 print(hex(binascii.crc32(b'\x00' * 32)))
diff --git a/tests/extmod/ubinascii_hexlify.py b/tests/extmod/ubinascii_hexlify.py
index 5d70bda96df32093190ea3375985cfa15e8d25cb..bc99287476fb95432bfd93e847f4cb24a42632ab 100644
--- a/tests/extmod/ubinascii_hexlify.py
+++ b/tests/extmod/ubinascii_hexlify.py
@@ -4,9 +4,8 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 print(binascii.hexlify(b'\x00\x01\x02\x03\x04\x05\x06\x07'))
 print(binascii.hexlify(b'\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'))
diff --git a/tests/extmod/ubinascii_micropython.py b/tests/extmod/ubinascii_micropython.py
index 96f566bd147bae0ecb817b3c89993724d7b10578..a4c00a2cb805e8679f057a359b466d6e842cff50 100644
--- a/tests/extmod/ubinascii_micropython.py
+++ b/tests/extmod/ubinascii_micropython.py
@@ -4,9 +4,8 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # two arguments supported in uPy but not CPython
 a = binascii.hexlify(b'123', ':')
diff --git a/tests/extmod/ubinascii_unhexlify.py b/tests/extmod/ubinascii_unhexlify.py
index e669789ba8b679b47e7c2da5524a387f715074fd..865abfe3a822eefeb4a887c8cfdf489df3221106 100644
--- a/tests/extmod/ubinascii_unhexlify.py
+++ b/tests/extmod/ubinascii_unhexlify.py
@@ -4,9 +4,8 @@ try:
     except ImportError:
         import binascii
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 print(binascii.unhexlify(b'0001020304050607'))
 print(binascii.unhexlify(b'08090a0b0c0d0e0f'))
diff --git a/tests/extmod/uctypes_32bit_intbig.py b/tests/extmod/uctypes_32bit_intbig.py
index a082dc3704ef69605741f3ab0b0262981fb7cce4..6b4d3d76cda6b3eb680eb17f7053d4a1aa6bc433 100644
--- a/tests/extmod/uctypes_32bit_intbig.py
+++ b/tests/extmod/uctypes_32bit_intbig.py
@@ -3,9 +3,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 buf = b"12345678abcd"
 struct = uctypes.struct(
diff --git a/tests/extmod/uctypes_array_assign_le.py b/tests/extmod/uctypes_array_assign_le.py
index bae467d092ca148dd3910ffd4c5fcb39fe166023..6afa7e0a24dd237572c09992a36a54e7ca603d66 100644
--- a/tests/extmod/uctypes_array_assign_le.py
+++ b/tests/extmod/uctypes_array_assign_le.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     # arr is array at offset 0, of UINT8 elements, array size is 2
diff --git a/tests/extmod/uctypes_array_assign_native_le.py b/tests/extmod/uctypes_array_assign_native_le.py
index f0ecc0dad41407949bc7ece402e59b03434a4ff5..a538bf9add72d8d42dd5338425656c673a643525 100644
--- a/tests/extmod/uctypes_array_assign_native_le.py
+++ b/tests/extmod/uctypes_array_assign_native_le.py
@@ -3,11 +3,11 @@ try:
     import uctypes
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if sys.byteorder != "little":
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     # arr is array at offset 0, of UINT8 elements, array size is 2
diff --git a/tests/extmod/uctypes_array_assign_native_le_intbig.py b/tests/extmod/uctypes_array_assign_native_le_intbig.py
index f29a3b66e9532cca8ad1efed9835a88a097d343e..84dfba0e29134491205ae58b8c61bfb4dd9f6be2 100644
--- a/tests/extmod/uctypes_array_assign_native_le_intbig.py
+++ b/tests/extmod/uctypes_array_assign_native_le_intbig.py
@@ -3,11 +3,11 @@ try:
     import uctypes
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if sys.byteorder != "little":
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     # arr is array at offset 0, of UINT8 elements, array size is 2
diff --git a/tests/extmod/uctypes_bytearray.py b/tests/extmod/uctypes_bytearray.py
index bf7845ab266f5002c9cb518f5b48be80e2dec78a..61c7da271f10cf7abdeff0d41358007f49d046a1 100644
--- a/tests/extmod/uctypes_bytearray.py
+++ b/tests/extmod/uctypes_bytearray.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     "arr": (uctypes.ARRAY | 0, uctypes.UINT8 | 2),
diff --git a/tests/extmod/uctypes_le.py b/tests/extmod/uctypes_le.py
index 829beda58b78f109152174a6e5f6bf34d1360e8e..7df5ac0909b3aaeeb6aa8b5cdfc592bbdcaebe8d 100644
--- a/tests/extmod/uctypes_le.py
+++ b/tests/extmod/uctypes_le.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     "s0": uctypes.UINT16 | 0,
diff --git a/tests/extmod/uctypes_le_float.py b/tests/extmod/uctypes_le_float.py
index a61305ba8666a2f81ff673df61bc659e79e56ce9..84ff2b84cf6e2ab7c57e0b7cbb03e13f0683e860 100644
--- a/tests/extmod/uctypes_le_float.py
+++ b/tests/extmod/uctypes_le_float.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     "f32": uctypes.FLOAT32 | 0,
diff --git a/tests/extmod/uctypes_native_float.py b/tests/extmod/uctypes_native_float.py
index 80cb54383dce0075b76dd18b9ce49bb5dfe94ba3..acef47036d00cad96bf1bf491eb6765c9c354de5 100644
--- a/tests/extmod/uctypes_native_float.py
+++ b/tests/extmod/uctypes_native_float.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     "f32": uctypes.FLOAT32 | 0,
diff --git a/tests/extmod/uctypes_native_le.py b/tests/extmod/uctypes_native_le.py
index 5900224d41a9a7b89b12ed096f5ae2dedb945772..8bba03b38cebb249f901a024d0f351f2c7faf9d3 100644
--- a/tests/extmod/uctypes_native_le.py
+++ b/tests/extmod/uctypes_native_le.py
@@ -6,11 +6,11 @@ try:
     import uctypes
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if sys.byteorder != "little":
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 desc = {
diff --git a/tests/extmod/uctypes_print.py b/tests/extmod/uctypes_print.py
index 76a009dc751ca3bb176e60dc5b921431abd38581..c310238e546c2ac8aa424372c2348bfff6fb9e2c 100644
--- a/tests/extmod/uctypes_print.py
+++ b/tests/extmod/uctypes_print.py
@@ -2,9 +2,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # we use an address of "0" because we just want to print something deterministic
 # and don't actually need to set/get any values in the struct
diff --git a/tests/extmod/uctypes_ptr_le.py b/tests/extmod/uctypes_ptr_le.py
index e8a6243ce1ee3949d9a826b1879ee4d06b18ce3b..056e4565060c5ef0d8a7929b3b84d1fda3f791ea 100644
--- a/tests/extmod/uctypes_ptr_le.py
+++ b/tests/extmod/uctypes_ptr_le.py
@@ -3,11 +3,11 @@ try:
     import uctypes
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if sys.byteorder != "little":
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     "ptr": (uctypes.PTR | 0, uctypes.UINT8),
diff --git a/tests/extmod/uctypes_ptr_native_le.py b/tests/extmod/uctypes_ptr_native_le.py
index 9b016c04d56cbd27112ec1d889b060cef6ab53f7..24508b1cb4156265d3c6a0fae40f2b132afda0f1 100644
--- a/tests/extmod/uctypes_ptr_native_le.py
+++ b/tests/extmod/uctypes_ptr_native_le.py
@@ -3,11 +3,11 @@ try:
     import uctypes
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if sys.byteorder != "little":
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 desc = {
diff --git a/tests/extmod/uctypes_sizeof.py b/tests/extmod/uctypes_sizeof.py
index 266cd06943263f775715b89a08ebcfe81598c659..5a6adb4376da510f4845ca54b8d10d9378030527 100644
--- a/tests/extmod/uctypes_sizeof.py
+++ b/tests/extmod/uctypes_sizeof.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 desc = {
     # arr is array at offset 0, of UINT8 elements, array size is 2
diff --git a/tests/extmod/uctypes_sizeof_native.py b/tests/extmod/uctypes_sizeof_native.py
index f676c8c6de74af48756a2ea37d0162f4d91803b8..32c740e773503091b02834e49952cbb31e6163b2 100644
--- a/tests/extmod/uctypes_sizeof_native.py
+++ b/tests/extmod/uctypes_sizeof_native.py
@@ -1,9 +1,8 @@
 try:
     import uctypes
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 S1 = {}
 assert uctypes.sizeof(S1) == 0
diff --git a/tests/extmod/uhashlib_sha1.py b/tests/extmod/uhashlib_sha1.py
index f12fc649aade763feffa927ef97ed8ecc118e41f..4f7066899aa112d0e0eed95551a8c977c5d89530 100644
--- a/tests/extmod/uhashlib_sha1.py
+++ b/tests/extmod/uhashlib_sha1.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uhashlib as hashlib
 except ImportError:
@@ -8,14 +7,14 @@ except ImportError:
         # This is neither uPy, nor cPy, so must be uPy with
         # uhashlib module disabled.
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 try:
     hashlib.sha1
 except AttributeError:
     # SHA1 is only available on some ports
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 sha1 = hashlib.sha1(b'hello')
 sha1.update(b'world')
diff --git a/tests/extmod/uhashlib_sha256.py b/tests/extmod/uhashlib_sha256.py
index ff51f2ffa5d5908f72f56ecc2929021861a3643d..3200e8f5cd3d5a296360ba1d5e6d990aa5ff50a1 100644
--- a/tests/extmod/uhashlib_sha256.py
+++ b/tests/extmod/uhashlib_sha256.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uhashlib as hashlib
 except ImportError:
@@ -8,7 +7,7 @@ except ImportError:
         # This is neither uPy, nor cPy, so must be uPy with
         # uhashlib module disabled.
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 
 h = hashlib.sha256()
diff --git a/tests/extmod/uheapq1.py b/tests/extmod/uheapq1.py
index 4b0e5de57ec8d03f4347bc1912ddccbb756ec47d..7c1fe4e1ec149e8b07f4bf768755500d9269df45 100644
--- a/tests/extmod/uheapq1.py
+++ b/tests/extmod/uheapq1.py
@@ -4,9 +4,8 @@ except:
     try:
         import heapq
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 try:
     heapq.heappop([])
diff --git a/tests/extmod/ujson_dumps.py b/tests/extmod/ujson_dumps.py
index 4a02f51704e2a05ff3ba40f85d210180cb2b8e32..d732718019ee2f305d060406c70cd3580e5ab824 100644
--- a/tests/extmod/ujson_dumps.py
+++ b/tests/extmod/ujson_dumps.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import json
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 print(json.dumps(False))
 print(json.dumps(True))
diff --git a/tests/extmod/ujson_dumps_extra.py b/tests/extmod/ujson_dumps_extra.py
index a52e8224c4c43fec5ad281d07f986de652f047b5..21a388c32d0979183d623dd945414ea5039b973a 100644
--- a/tests/extmod/ujson_dumps_extra.py
+++ b/tests/extmod/ujson_dumps_extra.py
@@ -3,8 +3,7 @@
 try:
     import ujson
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 print(ujson.dumps(b'1234'))
diff --git a/tests/extmod/ujson_dumps_float.py b/tests/extmod/ujson_dumps_float.py
index d949ea6dddfa1051a42fc94dd89f2a017cb048fe..e8cceb6f1a533023f2df8a3dd5e830a74e3ac644 100644
--- a/tests/extmod/ujson_dumps_float.py
+++ b/tests/extmod/ujson_dumps_float.py
@@ -4,8 +4,7 @@ except ImportError:
     try:
         import json
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 print(json.dumps(1.2))
diff --git a/tests/extmod/ujson_load.py b/tests/extmod/ujson_load.py
index 901132a5f88b5023dd1dd7574c12ac958c052034..9725ab2ddc9a5b912d0a57e87037f45ccc437c77 100644
--- a/tests/extmod/ujson_load.py
+++ b/tests/extmod/ujson_load.py
@@ -6,9 +6,8 @@ except:
         from io import StringIO
         import json
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 print(json.load(StringIO('null')))
 print(json.load(StringIO('"abc\\u0064e"')))
diff --git a/tests/extmod/ujson_loads.py b/tests/extmod/ujson_loads.py
index b2e18e3af71d31d75d38bba5e08618fb13098b4f..adba3c068d27c42616501604a81caa74b4464c2e 100644
--- a/tests/extmod/ujson_loads.py
+++ b/tests/extmod/ujson_loads.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import json
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 def my_print(o):
     if isinstance(o, dict):
diff --git a/tests/extmod/ujson_loads_float.py b/tests/extmod/ujson_loads_float.py
index b20a412ffbbf38cdfc5079930b108118cb10ba2a..f1b8cc364c4ac45741bc11e1ee37f4a8b2e7639f 100644
--- a/tests/extmod/ujson_loads_float.py
+++ b/tests/extmod/ujson_loads_float.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import json
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 def my_print(o):
     print('%.3f' % o)
diff --git a/tests/extmod/urandom_basic.py b/tests/extmod/urandom_basic.py
index 885b8517f4b52d442b0b7ddbfbd087a5b91eb9e4..57e6b26cba5908e8a0c2c1217153b02d65be4fb7 100644
--- a/tests/extmod/urandom_basic.py
+++ b/tests/extmod/urandom_basic.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import random
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 # check getrandbits returns a value within the bit range
 for b in (1, 2, 3, 4, 16, 32):
diff --git a/tests/extmod/urandom_extra.py b/tests/extmod/urandom_extra.py
index 925dd0dbcb8546e63dc91ca56cd388d886d845e9..f5a34e1687fe1d64c4cb92cf6b13678177e4f628 100644
--- a/tests/extmod/urandom_extra.py
+++ b/tests/extmod/urandom_extra.py
@@ -4,16 +4,14 @@ except ImportError:
     try:
         import random
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 try:
     random.randint
 except AttributeError:
-    import sys
     print('SKIP')
-    sys.exit()
+    raise SystemExit
 
 print('randrange')
 for i in range(50):
diff --git a/tests/extmod/ure1.py b/tests/extmod/ure1.py
index a867f1751550a928c21f3908ba7e818c1db71235..1f38b808767a1a8cd3b8b82354ef366c60d9776a 100644
--- a/tests/extmod/ure1.py
+++ b/tests/extmod/ure1.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import re
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 r = re.compile(".+")
 m = r.match("abc")
diff --git a/tests/extmod/ure_debug.py b/tests/extmod/ure_debug.py
index 252df21e3098986953ae4edfa73fb7ac5b3ca59f..cfb264bb6d2900e075100eac1dba6b8a350617f0 100644
--- a/tests/extmod/ure_debug.py
+++ b/tests/extmod/ure_debug.py
@@ -2,8 +2,7 @@
 try:
     import ure
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 ure.compile('^a|b[0-9]\w$', ure.DEBUG)
diff --git a/tests/extmod/ure_error.py b/tests/extmod/ure_error.py
index 3f16f9158ccba81d0929c5b012da1f78d3db2870..f52f735c7fa5ec74d69c39ab5bc20954e88f66a8 100644
--- a/tests/extmod/ure_error.py
+++ b/tests/extmod/ure_error.py
@@ -6,9 +6,8 @@ except ImportError:
     try:
         import re
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 def test_re(r):
     try:
diff --git a/tests/extmod/ure_group.py b/tests/extmod/ure_group.py
index 98aae2a736f11a1528969998b7c67de2b162aaa5..4e39468c5ba0a1500370b2ca592f5af536f7eee5 100644
--- a/tests/extmod/ure_group.py
+++ b/tests/extmod/ure_group.py
@@ -6,9 +6,8 @@ except ImportError:
     try:
         import re
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 def print_groups(match):
     print('----')
diff --git a/tests/extmod/ure_namedclass.py b/tests/extmod/ure_namedclass.py
index e233f17c887c867c9cdfcff0faa1c7ddb8e876a4..215d09613f4b0a4dc52e4b176b4145239027a37e 100644
--- a/tests/extmod/ure_namedclass.py
+++ b/tests/extmod/ure_namedclass.py
@@ -6,9 +6,8 @@ except ImportError:
     try:
         import re
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 def print_groups(match):
     print('----')
diff --git a/tests/extmod/ure_split.py b/tests/extmod/ure_split.py
index 1e411c27c510ca066301beda0f437f9c1903c1e2..317ca98927877d5942772531dac75c01c13b8b3d 100644
--- a/tests/extmod/ure_split.py
+++ b/tests/extmod/ure_split.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import re
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 r = re.compile(" ")
 s = r.split("a b c foobar")
diff --git a/tests/extmod/ure_split_empty.py b/tests/extmod/ure_split_empty.py
index ad6334ebae4eae082c1445af7768be2b1e3be978..76ce97ea67d48acb0ad600856b6b4149dd2fbb48 100644
--- a/tests/extmod/ure_split_empty.py
+++ b/tests/extmod/ure_split_empty.py
@@ -7,9 +7,8 @@
 try:
     import ure as re
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 r = re.compile(" *")
 s = r.split("a b    c   foobar")
diff --git a/tests/extmod/ure_split_notimpl.py b/tests/extmod/ure_split_notimpl.py
index eca3ea512eb07a5ed7673a24d2436fcdcf9da758..da6e9652d03e23ca3de3b1a48f838ffb359050ff 100644
--- a/tests/extmod/ure_split_notimpl.py
+++ b/tests/extmod/ure_split_notimpl.py
@@ -1,9 +1,8 @@
 try:
     import ure as re
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 r = re.compile('( )')
 try:
diff --git a/tests/extmod/ussl_basic.py b/tests/extmod/ussl_basic.py
index e9d435bca8e12a3981d711888b78c4e01bda9803..9f8019a0bce2f50ae2b03744621b501e069c6559 100644
--- a/tests/extmod/ussl_basic.py
+++ b/tests/extmod/ussl_basic.py
@@ -5,8 +5,7 @@ try:
     import ussl as ssl
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 # create in client mode
 try:
diff --git a/tests/extmod/utimeq1.py b/tests/extmod/utimeq1.py
index 68d69e25e6cd09ca28a38c02783feafc8ce1e43f..dc7f3b6600404810804b8201d6bef2af1744aa02 100644
--- a/tests/extmod/utimeq1.py
+++ b/tests/extmod/utimeq1.py
@@ -5,8 +5,7 @@ try:
     from utimeq import utimeq
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 DEBUG = 0
 
diff --git a/tests/extmod/utimeq_stable.py b/tests/extmod/utimeq_stable.py
index 9f6ba76d4a673981582c65c34ea0fce0836e2b7a..9fb522d514628d852ed08724ef253e8759bcdda3 100644
--- a/tests/extmod/utimeq_stable.py
+++ b/tests/extmod/utimeq_stable.py
@@ -2,8 +2,7 @@ try:
     from utimeq import utimeq
 except ImportError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 h = utimeq(10)
 
diff --git a/tests/extmod/uzlib_decompio.py b/tests/extmod/uzlib_decompio.py
index 6f07c048c7569edad7eb23305fda81a83918fcfb..112a82597638a03750be0201b8ae5338d95e58b9 100644
--- a/tests/extmod/uzlib_decompio.py
+++ b/tests/extmod/uzlib_decompio.py
@@ -2,9 +2,8 @@ try:
     import uzlib as zlib
     import uio as io
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 # Raw DEFLATE bitstream
diff --git a/tests/extmod/uzlib_decompio_gz.py b/tests/extmod/uzlib_decompio_gz.py
index 7572e96939ec9f513f043840485a921b45e0a42d..02087f76392a7e21c8afbf9e0660b15f0f234dde 100644
--- a/tests/extmod/uzlib_decompio_gz.py
+++ b/tests/extmod/uzlib_decompio_gz.py
@@ -2,9 +2,8 @@ try:
     import uzlib as zlib
     import uio as io
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 # gzip bitstream
diff --git a/tests/extmod/uzlib_decompress.py b/tests/extmod/uzlib_decompress.py
index 10121ee7e18e0c9f0f4665920c1cf3d48d99351d..63247955c95658040f94e1b522b59e7238c3e159 100644
--- a/tests/extmod/uzlib_decompress.py
+++ b/tests/extmod/uzlib_decompress.py
@@ -4,9 +4,8 @@ except ImportError:
     try:
         import uzlib as zlib
     except ImportError:
-        import sys
         print("SKIP")
-        sys.exit()
+        raise SystemExit
 
 PATTERNS = [
     # Packed results produced by CPy's zlib.compress()
diff --git a/tests/extmod/vfs_basic.py b/tests/extmod/vfs_basic.py
index fc016b8d5ab3bd1b78de27fd0146f7c8221bed21..99587482446c3175213997d8fcf5c31ac0206921 100644
--- a/tests/extmod/vfs_basic.py
+++ b/tests/extmod/vfs_basic.py
@@ -9,8 +9,7 @@ try:
     uos.mount
 except (ImportError, AttributeError):
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 
 class Filesystem:
diff --git a/tests/extmod/vfs_fat_fileio1.py b/tests/extmod/vfs_fat_fileio1.py
index 9036df7a5ce13af893749df819c85d5e3348b0cd..d19df120b5f755b41e95b2285004c633c4bd7632 100644
--- a/tests/extmod/vfs_fat_fileio1.py
+++ b/tests/extmod/vfs_fat_fileio1.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uerrno
     try:
@@ -8,13 +7,13 @@ try:
         import uos
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     uos.VfsFat
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 class RAMFS:
@@ -46,7 +45,7 @@ try:
     bdev = RAMFS(50)
 except MemoryError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 uos.VfsFat.mkfs(bdev)
 vfs = uos.VfsFat(bdev)
diff --git a/tests/extmod/vfs_fat_fileio2.py b/tests/extmod/vfs_fat_fileio2.py
index b2a0ba70f4dc0f2b4c941512fd82722f43f27ebb..b5adb75c9693950d00230623cc08fe341b65a514 100644
--- a/tests/extmod/vfs_fat_fileio2.py
+++ b/tests/extmod/vfs_fat_fileio2.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uerrno
     try:
@@ -8,13 +7,13 @@ try:
         import uos
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     uos.VfsFat
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 class RAMFS:
@@ -46,7 +45,7 @@ try:
     bdev = RAMFS(50)
 except MemoryError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 uos.VfsFat.mkfs(bdev)
 vfs = uos.VfsFat(bdev)
diff --git a/tests/extmod/vfs_fat_more.py b/tests/extmod/vfs_fat_more.py
index dacb215535f07852d8f0b84c994fb4bb5ef44f13..baec96787bb453e6e31e0ebb1ffffe9380329a1f 100644
--- a/tests/extmod/vfs_fat_more.py
+++ b/tests/extmod/vfs_fat_more.py
@@ -1,4 +1,3 @@
-import sys
 import uerrno
 try:
     try:
@@ -8,13 +7,13 @@ try:
         import uos
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     uos.VfsFat
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 class RAMFS:
@@ -47,7 +46,7 @@ try:
     bdev2 = RAMFS(50)
 except MemoryError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # first we umount any existing mount points the target may have
 try:
diff --git a/tests/extmod/vfs_fat_oldproto.py b/tests/extmod/vfs_fat_oldproto.py
index 3e66758c364997fdf22351846d20ca9b689a45ea..ef4f1da78ee533da08728b2f51f4fb5e6acce20c 100644
--- a/tests/extmod/vfs_fat_oldproto.py
+++ b/tests/extmod/vfs_fat_oldproto.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uerrno
     try:
@@ -7,13 +6,13 @@ try:
         import uos
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     uos.VfsFat
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 class RAMFS_OLD:
 
@@ -43,7 +42,7 @@ try:
     bdev = RAMFS_OLD(50)
 except MemoryError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 uos.VfsFat.mkfs(bdev)
 vfs = uos.VfsFat(bdev)
diff --git a/tests/extmod/vfs_fat_ramdisk.py b/tests/extmod/vfs_fat_ramdisk.py
index fe72a8beff450487a8652ef995fd8498f2be80dd..801c697862043bcca0e3a4414c584ce336ea5f9f 100644
--- a/tests/extmod/vfs_fat_ramdisk.py
+++ b/tests/extmod/vfs_fat_ramdisk.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uerrno
     try:
@@ -7,13 +6,13 @@ try:
         import uos
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     uos.VfsFat
 except AttributeError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 class RAMFS:
@@ -45,7 +44,7 @@ try:
     bdev = RAMFS(50)
 except MemoryError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 uos.VfsFat.mkfs(bdev)
 
diff --git a/tests/extmod/websocket_basic.py b/tests/extmod/websocket_basic.py
index 770836c8ebfafaabe779f819e1e6e67354cde228..9a80503a0373f0cde58643bed914af9e71abcc58 100644
--- a/tests/extmod/websocket_basic.py
+++ b/tests/extmod/websocket_basic.py
@@ -3,9 +3,8 @@ try:
     import uerrno
     import websocket
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # put raw data in the stream and do a websocket read
 def ws_read(msg, sz):
diff --git a/tests/io/buffered_writer.py b/tests/io/buffered_writer.py
index bb7b4e8dba12cd62cecb9b4b566e0a095123e389..c2cedb99123397882df41866215a68aaf450ae05 100644
--- a/tests/io/buffered_writer.py
+++ b/tests/io/buffered_writer.py
@@ -4,9 +4,8 @@ try:
     io.BytesIO
     io.BufferedWriter
 except AttributeError:
-    import sys
     print('SKIP')
-    sys.exit()
+    raise SystemExit
 
 bts = io.BytesIO()
 buf = io.BufferedWriter(bts, 8)
diff --git a/tests/io/open_append.py b/tests/io/open_append.py
index 2120b72f04283358d703d58c8da3bc7d00eca3d3..a696823bc560431b5499256f020781506d489a1e 100644
--- a/tests/io/open_append.py
+++ b/tests/io/open_append.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uos as os
 except ImportError:
@@ -6,7 +5,7 @@ except ImportError:
 
 if not hasattr(os, "unlink"):
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # cleanup in case testfile exists
 try:
diff --git a/tests/io/open_plus.py b/tests/io/open_plus.py
index 98598ee67261e34d645c03e2285132218a35b61d..bba96fa2f9895a91912e49adb5bf571796bc70c2 100644
--- a/tests/io/open_plus.py
+++ b/tests/io/open_plus.py
@@ -1,4 +1,3 @@
-import sys
 try:
     import uos as os
 except ImportError:
@@ -6,7 +5,7 @@ except ImportError:
 
 if not hasattr(os, "unlink"):
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # cleanup in case testfile exists
 try:
diff --git a/tests/io/resource_stream.py b/tests/io/resource_stream.py
index 86975f1181c04a2df050de5d6db15da2780ed43a..37d985bf16614843e6f9b6c07c9b5a75d8d39ded 100644
--- a/tests/io/resource_stream.py
+++ b/tests/io/resource_stream.py
@@ -5,7 +5,7 @@ try:
     uio.resource_stream
 except AttributeError:
     print('SKIP')
-    sys.exit()
+    raise SystemExit
 
 buf = uio.resource_stream("data", "file2")
 print(buf.read())
diff --git a/tests/io/write_ext.py b/tests/io/write_ext.py
index 19b616174bfaf4a95ea51786424ae2cac235275d..5a6eaa35cf0395d33db1443b90df7af424efa2e0 100644
--- a/tests/io/write_ext.py
+++ b/tests/io/write_ext.py
@@ -5,9 +5,8 @@ import uio
 try:
     uio.BytesIO
 except AttributeError:
-    import sys
     print('SKIP')
-    sys.exit()
+    raise SystemExit
 
 buf = uio.BytesIO()
 
diff --git a/tests/jni/list.py b/tests/jni/list.py
index 6725abb5a03bf3cb39d54c9a40990bb264c41219..d58181d0bad0e57fd4e51598334a103f293bc51c 100644
--- a/tests/jni/list.py
+++ b/tests/jni/list.py
@@ -1,10 +1,9 @@
-import sys
 import jni
 try:
     ArrayList = jni.cls("java/util/ArrayList")
 except:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 l = ArrayList()
 print(l)
diff --git a/tests/jni/object.py b/tests/jni/object.py
index 6cf936c4d0edd62ccf2d3fd23426a0d3984c2651..aa67615ec8a839479511065d943bca8d993b343b 100644
--- a/tests/jni/object.py
+++ b/tests/jni/object.py
@@ -1,10 +1,9 @@
-import sys
 import jni
 try:
     Integer = jni.cls("java/lang/Integer")
 except:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # Create object
 i = Integer(42)
diff --git a/tests/jni/system_out.py b/tests/jni/system_out.py
index 7a1f180306033399ebe8ffceba9946619aec7d03..86c4b9e1121634bf11c43a382e46907fa671ee7a 100644
--- a/tests/jni/system_out.py
+++ b/tests/jni/system_out.py
@@ -1,9 +1,8 @@
-import sys
 try:
     import jni
     System = jni.cls("java/lang/System")
 except:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 System.out.println("Hello, Java!")
diff --git a/tests/micropython/heapalloc_bytesio.py b/tests/micropython/heapalloc_bytesio.py
index 2a8d50abe37126807bf5f2fd74e4bdd426766d8f..4aae2abf063e876c9e2201bc1f646dec704feb4a 100644
--- a/tests/micropython/heapalloc_bytesio.py
+++ b/tests/micropython/heapalloc_bytesio.py
@@ -1,9 +1,8 @@
 try:
     import uio
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 import micropython
 
diff --git a/tests/micropython/heapalloc_iter.py b/tests/micropython/heapalloc_iter.py
index 45d3519e45f6fbe9763d88d8890c16d34ab6ad02..79461f999afead30fb25659ee6f567622c8078e5 100644
--- a/tests/micropython/heapalloc_iter.py
+++ b/tests/micropython/heapalloc_iter.py
@@ -2,9 +2,8 @@
 try:
     import array
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 try:
     from micropython import heap_lock, heap_unlock
diff --git a/tests/micropython/heapalloc_traceback.py b/tests/micropython/heapalloc_traceback.py
index b3795293f31eeb35236a5a7074cb166c1ae0a6a0..f4212b6ce18e76986fd82a38a49a7fb837b8cd66 100644
--- a/tests/micropython/heapalloc_traceback.py
+++ b/tests/micropython/heapalloc_traceback.py
@@ -5,9 +5,8 @@ import sys
 try:
     import uio
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # preallocate exception instance with some room for a traceback
 global_exc = StopIteration()
diff --git a/tests/micropython/heapalloc_traceback.py.exp b/tests/micropython/heapalloc_traceback.py.exp
index facd0af1379bc4684b594563a6d245b70fb93c9e..291bbd697c4afb54798d5f7fa977801500d06eca 100644
--- a/tests/micropython/heapalloc_traceback.py.exp
+++ b/tests/micropython/heapalloc_traceback.py.exp
@@ -1,5 +1,5 @@
 StopIteration
 Traceback (most recent call last):
-  File  , line 23, in test
+  File  , line 22, in test
 StopIteration: 
 
diff --git a/tests/micropython/kbd_intr.py b/tests/micropython/kbd_intr.py
index a7ce7464b99ff61f1a53b421288b6e34f164b935..879c9a229f222d9129f2c9801f789463425823d6 100644
--- a/tests/micropython/kbd_intr.py
+++ b/tests/micropython/kbd_intr.py
@@ -6,8 +6,7 @@ try:
     micropython.kbd_intr
 except AttributeError:
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 # just check we can actually call it
 micropython.kbd_intr(3)
diff --git a/tests/micropython/schedule.py b/tests/micropython/schedule.py
index 3d584eea4faeaf4f0af8944a51e00e3748929329..74f90cb2de4004028e8efc88b2582d3b124f48e5 100644
--- a/tests/micropython/schedule.py
+++ b/tests/micropython/schedule.py
@@ -6,8 +6,7 @@ try:
     micropython.schedule
 except AttributeError:
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 # Basic test of scheduling a function.
 
diff --git a/tests/misc/non_compliant.py b/tests/misc/non_compliant.py
index 31074ab016a460d105512a5e312a5fd180031920..b4c90e9fcf43986cdf63cc8cd0eaaf9db08c9585 100644
--- a/tests/misc/non_compliant.py
+++ b/tests/misc/non_compliant.py
@@ -4,9 +4,8 @@ try:
     import array
     import ustruct
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # when super can't find self
 try:
diff --git a/tests/misc/print_exception.py b/tests/misc/print_exception.py
index b833a7981621bdc491044d79aac00a1c0a77f37b..9ab8e728b99d5fddcaca613aca83e2c3627edb4c 100644
--- a/tests/misc/print_exception.py
+++ b/tests/misc/print_exception.py
@@ -6,7 +6,7 @@ try:
         import io
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 if hasattr(sys, 'print_exception'):
     print_exception = sys.print_exception
diff --git a/tests/misc/recursive_data.py b/tests/misc/recursive_data.py
index 383018945312c103a44cd94a5b9b4553784675db..3b7fa509525843edd867c83522917e980ea85398 100644
--- a/tests/misc/recursive_data.py
+++ b/tests/misc/recursive_data.py
@@ -2,9 +2,8 @@
 try:
     import uio as io
 except ImportError:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 l = [1, 2, 3, None]
 l[-1] = l
diff --git a/tests/misc/recursive_iternext.py b/tests/misc/recursive_iternext.py
index d90f17716854ddc67c24cbea13160e1b5ca54e74..edb5a843f29dcb8630ad21bb0cbd45adbecb7bd1 100644
--- a/tests/misc/recursive_iternext.py
+++ b/tests/misc/recursive_iternext.py
@@ -6,9 +6,8 @@ try:
     max
     zip
 except:
-    import sys
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 # We need to pick an N that is large enough to hit the recursion
 # limit, but not too large that we run out of heap memory.
diff --git a/tests/misc/sys_exc_info.py b/tests/misc/sys_exc_info.py
index de5b825624c1e4a9331a4dfe890b9c99982ea833..4bb2c61e8923635e35dbad0c0a99085d29468a73 100644
--- a/tests/misc/sys_exc_info.py
+++ b/tests/misc/sys_exc_info.py
@@ -3,7 +3,7 @@ try:
     sys.exc_info
 except:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 def f():
     print(sys.exc_info()[0:2])
diff --git a/tests/pyb/can.py b/tests/pyb/can.py
index 7f2d070ecb07b7cfb4bdf87a99d994edf2aa7b91..0fd8c8368d321d1f7dadc507e931737505a271fa 100644
--- a/tests/pyb/can.py
+++ b/tests/pyb/can.py
@@ -2,8 +2,7 @@ try:
     from pyb import CAN
 except ImportError:
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 import pyb
 
diff --git a/tests/pyb/dac.py b/tests/pyb/dac.py
index 942f303543472af9de8dfa08313c7cf6bb1e6f00..6f03bbc64dfeb40c0b76dc288b99341ac08359ac 100644
--- a/tests/pyb/dac.py
+++ b/tests/pyb/dac.py
@@ -2,8 +2,7 @@ import pyb
 
 if not hasattr(pyb, 'DAC'):
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 dac = pyb.DAC(1)
 print(dac)
diff --git a/tests/pyb/pyb_f405.py b/tests/pyb/pyb_f405.py
index 3c81fe109df41456f783140192c4b22ac5add4a5..2f161ae09959215c36175ee2c5e3d1125580c742 100644
--- a/tests/pyb/pyb_f405.py
+++ b/tests/pyb/pyb_f405.py
@@ -4,8 +4,7 @@ import os, pyb
 
 if not 'STM32F405' in os.uname().machine:
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 print(pyb.freq())
 print(type(pyb.rng()))
diff --git a/tests/pyb/pyb_f411.py b/tests/pyb/pyb_f411.py
index 3286539650eee13087c5e850ae2d9001fb5142d2..50de30282376f70f1d80face706488e2438ea9ac 100644
--- a/tests/pyb/pyb_f411.py
+++ b/tests/pyb/pyb_f411.py
@@ -4,7 +4,6 @@ import os, pyb
 
 if not 'STM32F411' in os.uname().machine:
     print('SKIP')
-    import sys
-    sys.exit()
+    raise SystemExit
 
 print(pyb.freq())
diff --git a/tests/unix/extra_coverage.py b/tests/unix/extra_coverage.py
index 870e7d5f22ce7eecfc02feb6887010a1214831ab..7a496aa879a96f0947697840cd1e939eab3e64e5 100644
--- a/tests/unix/extra_coverage.py
+++ b/tests/unix/extra_coverage.py
@@ -2,8 +2,7 @@ try:
     extra_coverage
 except NameError:
     print("SKIP")
-    import sys
-    sys.exit()
+    raise SystemExit
 
 import uerrno
 import uio
diff --git a/tests/unix/ffi_callback.py b/tests/unix/ffi_callback.py
index 7f8af15b370fa0af59db07575cfdfffb08de622a..23b058bcec2c4d8c256abb4fe1a615e1ae141273 100644
--- a/tests/unix/ffi_callback.py
+++ b/tests/unix/ffi_callback.py
@@ -1,9 +1,8 @@
-import sys
 try:
     import ffi
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 def ffi_open(names):
diff --git a/tests/unix/ffi_float.py b/tests/unix/ffi_float.py
index cc12fa7ad9ac445809caa9839f969b8a044f8a42..c92a39bcdc82107fffae0752458070f18bf342b9 100644
--- a/tests/unix/ffi_float.py
+++ b/tests/unix/ffi_float.py
@@ -1,10 +1,9 @@
 # test ffi float support
-import sys
 try:
     import ffi
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 def ffi_open(names):
diff --git a/tests/unix/ffi_float2.py b/tests/unix/ffi_float2.py
index d635a27140abf374497d47c5b6db8dd0ce883052..721eb4d192f17c74ad68769918979cd40c1e8ec7 100644
--- a/tests/unix/ffi_float2.py
+++ b/tests/unix/ffi_float2.py
@@ -1,10 +1,9 @@
 # test ffi float support
-import sys
 try:
     import ffi
 except ImportError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 
 def ffi_open(names):
@@ -25,7 +24,7 @@ try:
     tgammaf = libm.func('f', 'tgammaf', 'f')
 except OSError:
     print("SKIP")
-    sys.exit()
+    raise SystemExit
 
 for fun in (tgammaf,):
     for val in (0.5, 1, 1.0, 1.5, 4, 4.0):