diff --git a/test/py/tests/test_help.py b/test/py/tests/test_help.py
index 2325ff6..72f7282 100644
--- a/test/py/tests/test_help.py
+++ b/test/py/tests/test_help.py
@@ -4,35 +4,35 @@
 
 import pytest
 
-def test_help(u_boot_console):
+def test_help(ubman):
     """Test that the "help" command can be executed."""
 
-    lines = u_boot_console.run_command('help')
-    if u_boot_console.config.buildconfig.get('config_cmd_2048', 'n') == 'y':
+    lines = ubman.run_command('help')
+    if ubman.config.buildconfig.get('config_cmd_2048', 'n') == 'y':
         assert lines.splitlines()[0] == "2048      - The 2048 game"
     else:
         assert lines.splitlines()[0] == "?         - alias for 'help'"
 
 @pytest.mark.boardspec('sandbox')
-def test_help_no_devicetree(u_boot_console):
+def test_help_no_devicetree(ubman):
     try:
-        cons = u_boot_console
+        cons = ubman
         cons.restart_uboot_with_flags([], use_dtb=False)
         cons.run_command('help')
         output = cons.get_spawn_output().replace('\r', '')
         assert 'print command description/usage' in output
     finally:
         # Restart afterward to get the normal device tree back
-        u_boot_console.restart_uboot()
+        ubman.restart_uboot()
 
 @pytest.mark.boardspec('sandbox_vpl')
-def test_vpl_help(u_boot_console):
+def test_vpl_help(ubman):
     try:
-        cons = u_boot_console
+        cons = ubman
         cons.restart_uboot()
         cons.run_command('help')
         output = cons.get_spawn_output().replace('\r', '')
         assert 'print command description/usage' in output
     finally:
         # Restart afterward to get the normal device tree back
-        u_boot_console.restart_uboot()
+        ubman.restart_uboot()
