diff --git a/redfish/systems/test_powersubsystem_settings.robot b/redfish/systems/test_powersubsystem_settings.robot
new file mode 100755
index 0000000..ec62703
--- /dev/null
+++ b/redfish/systems/test_powersubsystem_settings.robot
@@ -0,0 +1,160 @@
+*** Settings ***
+Documentation       Get the system power supply readings and power mode settings.
+
+Resource            ../../lib/bmc_redfish_resource.robot
+Resource            ../../lib/bmc_redfish_utils.robot
+Resource            ../../lib/openbmc_ffdc.robot
+Library             ../../lib/gen_robot_valid.py
+
+Suite Setup         Suite Setup Execution
+Suite Teardown      Suite Teardown Execution
+Test Setup          Printn
+Test Teardown       Test Teardown Execution
+
+*** Variables ***
+
+# Power Mode Settings
+@{VALID_POWER_MODES}    Static  PowerSaving  MaximumPerformance
+
+
+*** Test Cases ***
+
+Verify Current Power Mode Setting
+    [Documentation]  Verify the current power mode setting.
+    [Tags]  Verify_Current_Power_Mode_Setting
+
+    # Example:
+    # /redfish/v1/Systems/system
+    #
+    # "PartNumber": "",
+    # "PowerMode": "MaximumPerformance",
+    # "PowerMode@Redfish.AllowableValues": [
+    #    "Static",
+    #    "MaximumPerformance",
+    #    "PowerSaving"
+    # ],
+
+    ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode
+    Rprint Vars  current_power_mode
+
+    Valid Value  current_power_mode  valid_values=${VALID_POWER_MODES}
+
+
+Verify Allowable Power Mode Settings
+    [Documentation]  Verify the allowable power mode settings.
+    [Tags]  Verify_Allowable_Power_Mode_Settings
+
+    ${allowed_power_modes}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode@Redfish.AllowableValues
+    Rprint Vars  allowed_power_modes
+
+    Valid List  allowed_power_modes  valid_values=${VALID_POWER_MODES}
+
+
+Verify Allowable Power Mode Settings Switch
+    [Documentation]  Check the allowable power modes are set successfully at runtime.
+    [Tags]  Verify_Allowable_Power_Mode_Settings_Switch_At_Runtime
+    [Template]  Set and Verify Power Mode Switches
+
+    # power_mode_type
+    Static
+    PowerSaving
+    MaximumPerformance
+
+
+Verify State Of PowerSubsystem PowerSupplies
+    [Documentation]  Verify the state of the system's powersupplies is ok and enabled.
+    [Tags]  Verify_State_Of_PowerSubsystem_PowerSupplies
+
+    ${total_num_supplies}=  Get Total Number Of PowerSupplies
+    Rprint Vars  total_num_supplies
+
+    ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
+    FOR  ${entry}  IN RANGE  0  ${total_num_supplies}
+         ${resp_resource}=  Redfish.Get  ${resp.dict["Members"][${entry}]["@odata.id"]}
+         # Example:
+         # "Status": {
+         #     "Health": "OK",
+         #     "State": "Enabled"
+         # },
+         Should Be Equal As Strings  ${resp_resource.dict["Status"]["Health"]}  OK
+         Should Be Equal As Strings  ${resp_resource.dict["Status"]["State"]}  Enabled
+    END
+
+
+Verify PowerSubsystem Efficiency Percent For All PowerSupplies
+    [Documentation]  Verify the efficiency percent for all powersupplies.
+    [Tags]  Verify_PowerSubsystem_Efficiency_Percent_For_PowerSupplies
+
+    ${total_num_supplies}=  Get Total Number Of PowerSupplies
+    Rprint Vars  total_num_supplies
+
+    # Example output:
+    # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0')
+    # resp_resource:
+    #   [0]:
+    #     [EfficiencyPercent]:                          90
+    # - Executing: get('/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1')
+    # resp_resource:
+    #   [0]:
+    #     [EfficiencyPercent]:                          90
+
+    ${resp}=  Redfish.Get  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies
+    FOR  ${entry}  IN RANGE  0  ${total_num_supplies}
+        ${resp_resource}=  Redfish.Get Attribute
+        ...  ${resp.dict["Members"][${entry}]["@odata.id"]}  EfficiencyRatings
+        Rprint Vars  resp_resource
+        ${efficiency_percentages}=  Nested Get  EfficiencyPercent  ${resp_resource}
+        Valid List  efficiency_percentages  [90]
+    END
+
+
+
+*** Keywords ***
+
+Get Total Number Of PowerSupplies
+    [Documentation]  Return total number of powersupplies.
+    ${total_num_powersupplies}=  Redfish.Get Attribute
+    ...  ${REDFISH_CHASSIS_URI}/${CHASSIS_ID}/PowerSubsystem/PowerSupplies  Members@odata.count
+
+    # Entries "Members@odata.count": 4,
+    # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply0'}
+    # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply1'}
+    # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply2'}
+    # {'@odata.id': '/redfish/v1/Chassis/chassis/PowerSubsystem/PowerSupplies/powersupply3'}
+    [Return]  ${total_num_powersupplies}
+
+
+Set and Verify Power Mode Switches
+    [Documentation]  Verify the power mode switches successfully at standby or runtime.
+    [Arguments]  ${power_mode}
+
+    # Description of Arguments(s):
+    # power_mode       Read the allowable power modes (e.g. "Static")
+
+    Redfish.Login
+
+    Redfish.patch  ${SYSTEM_BASE_URI}
+    ...  body={"PowerMode":"${power_mode}"}  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    ${current_power_mode}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  PowerMode
+    Should Be Equal As Strings  ${power_mode}  ${current_power_mode}
+    ...  msg=The thermal mode does not match the current fan mode.
+    Rprint Vars  current_power_mode
+
+
+Suite Teardown Execution
+    [Documentation]  Do the post suite teardown.
+
+    Redfish.Logout
+
+
+Suite Setup Execution
+    [Documentation]  Do test case setup tasks.
+
+    Printn
+    Redfish.Login
+
+
+Test Teardown Execution
+    [Documentation]  Do the post test teardown.
+
+    FFDC On Test Case Fail
