diff --git a/gui/gui_test/server_config/test_obmc_gui_network_settings.robot b/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
index 74f7f6b..2872595 100644
--- a/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
+++ b/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
@@ -29,6 +29,7 @@
 ${xpath_delete_static_ip}         //*[@title="Delete IPv4 row"]
 ${xpath_input_dns_server}         //*[@data-test-id="networkSettings-input-dnsAddress-0"]
 ${xpath_delete_dns_server}        //*[@title="Delete DNS row"]
+${xpath_ip_table}                 //*[@aria-colcount="3"]
 
 @{static_name_servers}            10.10.10.10
 @{null_value}                     null
@@ -36,6 +37,9 @@
 @{string_value}                   aa.bb.cc.dd
 @{special_char_value}             @@@.%%.44.11
 
+@{test_ipv4_addr}                 10.7.7.7
+@{test_subnet_mask}               255.255.0.0
+
 *** Test Cases ***
 
 Verify Navigation To Network Settings Page
@@ -197,6 +201,15 @@
 
     Delete DNS Server And Verify  ${static_name_servers}
 
+Configure And Verify Static IP Address
+    [Documentation]  Configure and verify static ip addresses.
+    [Setup]  Test Setup Execution
+    [Tags]  Configure_And_Verify_Static_IP_Address
+    [Teardown]  Run Keywords  Delete And Verify Static IP Address On BMC
+    ...  AND  Test Teardown Execution
+
+    Add Static IP Address And Verify  ${test_ipv4_addr}  ${test_subnet_mask}
+
 
 Configure And Verify Invalid DNS Server
     [Documentation]  Configure invalid DNS server and verify error.
@@ -222,6 +235,8 @@
     Click Element  ${xpath_server_configuration}
     Click Element  ${xpath_select_network_settings}
     Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  network-settings
+    ${host_name}  ${BMC_IP}=  Get Host Name IP  host=${OPENBMC_HOST}
+    Set Suite Variable  ${BMC_IP}
 
 
 Configure Invalid Network Address And Verify
@@ -330,4 +345,123 @@
        ...  ${static_name_servers}[${i}]
     END
 
+Add Static IP Address And Verify
+    [Documentation]  Add static IP on BMC and verify.
+    [Arguments]  ${ip_addresses}  ${subnet_masks}  ${expected_status}=Valid format
 
+    # Description of argument(s):
+    # ip_addresses         A list of IP address to be added (e.g. ["10.7.7.7"]).
+    # subnet_masks         A list of Subnet mask for the IP to be added (e.g. ["255.255.0.0"]).
+    # expected_status      Expected status while adding static ipv4 address
+    # ....                (e.g. Invalid format / Field required).
+
+    ${ip_count}=  Get Length  ${ip_addresses}
+    FOR  ${i}  IN RANGE  ${ip_count}
+       ${ip_location}=  Evaluate  ${i} + ${1}
+       Wait Until Element Is Enabled  ${xpath_add_static_ip}
+       Click Button  ${xpath_add_static_ip}
+       Wait Until Element Is Enabled  //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"]
+       Wait Until Element Is Enabled  //*[@data-test-id="networkSettings-input-subnetMask-${ip_location}"]
+       Input Text  //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"]  ${ip_addresses}[${i}]
+       Input Text  //*[@data-test-id="networkSettings-input-subnetMask-${ip_location}"]  ${subnet_masks}[${i}]
+    END
+
+    Click Button  ${xpath_network_save_settings}
+    Run keyword if  '${expected_status}' != 'Valid format'
+    ...  Run keywords  Page Should Contain  ${expected_status}  AND  Return From Keyword
+    Wait Until Page Contains Element  ${xpath_setting_success}  timeout=15
+    Sleep  ${NETWORK_TIMEOUT}s
+    Click Element  ${xpath_refresh_button}
+    Verify IP And Netmask On BMC Using GUI  ${ip_addresses}  ${subnet_masks}
+
+Delete And Verify Static IP Address On BMC
+    [Documentation]  Delete static IP address and verify
+
+    ${all_match_elements}=  Get Element Count  ${xpath_delete_static_ip}
+    FOR  ${element}  IN RANGE  ${all_match_elements}
+      ${ip_location}=  Evaluate  ${element} + ${1}
+      Delete Static IPv4 Addresses Except BMC IP  ${element}
+      ${status}=  Run Keyword And Return Status  Page Should Contain Textfield
+      ...  //*[@data-test-id="networkSettings-input-staticIpv4-${ip_location}"]
+      Exit For Loop IF  "${status}" == "${False}"
+    END
+
+    Click Button  ${xpath_network_save_settings}
+    Wait Until Page Contains Element  ${xpath_setting_success}  timeout=15
+    ${all_match_elements}=  Get Element Count  ${xpath_delete_static_ip}
+    Should Be Equal  ${all_match_elements}  ${1}
+    Textfield Value Should Be  ${xpath_static_input_ip0}  ${BMC_IP}
+    Sleep  ${NETWORK_TIMEOUT}s
+    Ping Host  ${OPENBMC_HOST}
+    Validate Network Config On BMC
+
+Delete Static IPv4 Addresses Except BMC IP
+    [Documentation]  Delete static IP addresses from IPv4 section on GUI except BMC IP.
+    [Arguments]   ${element}
+
+    # Description of argument(s):
+    # element          IP address location on GUI(e.g. 0 or 1).
+
+    ${ip_location}=  Evaluate  ${element} + ${1}
+    Wait Until Element Is Enabled  //*[@data-test-id="networkSettings-input-staticIpv4-${element}"]
+    ${input_ip}=  Get Value  //*[@data-test-id="networkSettings-input-staticIpv4-${element}"]
+    Run Keyword If  "${BMC_IP}" != "${input_ip}"
+    ...  Click Button  ${xpath_ip_table}/tbody/tr[${ip_location}]/td[3]/span/button
+
+    # Get delete ip elements.
+    ${delete_ip_elements}=  Get Element Count  ${xpath_delete_static_ip}
+
+    # Delete IP Address on BMC if avilable more than 1.
+    Run Keyword If  ${delete_ip_elements} != ${1}
+    ...  Delete Static IPv4 Addresses Except BMC IP  ${element}
+
+Test Setup Execution
+    [Documentation]  Get and delete existing IPv4 addresses and netmask if any..
+
+    ${ip_data}=  Create List
+    ${netmask_data}=  Create List
+
+    # Get all IPv4 addresses and netmask on BMC.
+    ${network_configurations}=  Get Network Configuration
+    FOR  ${network_configuration}  IN  @{network_configurations}
+      Continue For Loop If  '${BMC_IP}' == '${network_configuration['Address']}'
+      Append To List  ${ip_data}  ${network_configuration['Address']}
+      Append To List  ${netmask_data}  ${network_configuration['SubnetMask']}
+    END
+    Set Suite Variable  ${ip_data}
+    Set Suite Variable  ${netmask_data}
+
+    # Delete existing static IPv4 addresses and netmask if avilable.
+    Run keyword if  ${ip_data} == @{empty} and ${netmask_data} == @{empty}
+    ...  Delete And Verify Static IP Address On BMC
+
+
+Test Teardown Execution
+    [Documentation]  Restore existing IPv4 addresses and netmasks.
+
+    ${ip_length}=  Get Length  ${ip_data}
+    ${netmask_length}=  Get Length  ${netmask_data}
+
+    # Restore existing IPv4 addresses and netmasks if any..
+    Run keyword If  ${ip_length} == ${0} and ${netmask_length} == ${0}
+    ...  Add Static IP Address And Verify  ${ip_data}  ${netmask_data}
+
+
+Verify IP And Netmask On BMC Using GUI
+    [Documentation]  Verify IP and netmask on GUI.
+    [Arguments]   ${ip_addresses}  ${subnet_masks}
+
+    # Description of argument(s):
+    # ip_addresses         A list of IP address to be added (e.g. ["10.7.7.7"]).
+    # subnet_masks         A list of Subnet mask for the IP to be added (e.g. ["255.255.0.0]").
+
+    ${ip_count}=  Get Length  ${ip_addresses}
+    FOR  ${i}  IN RANGE  ${ip_count}
+       ${input_ip}=  Get Value  //*[@data-test-id="networkSettings-input-staticIpv4-${i}"]
+       Continue For Loop If  '${BMC_IP}' == '${input_ip}'
+       Textfield Value Should Be  //*[@data-test-id="networkSettings-input-staticIpv4-${i}"]
+       ...  ${ip_addresses}[${i}]
+       Textfield Value Should Be  //*[@data-test-id="networkSettings-input-subnetMask-${i}"]
+       ...  ${subnet_masks}[${i}]
+    END
+    Validate Network Config On BMC
