diff --git a/.DS_Store b/.DS_Store index 65080fbbe..0b9a44bd2 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/libs/perfecto_libs/android_lib.py b/libs/perfecto_libs/android_lib.py index 2fd7ef975..e56b23ebc 100644 --- a/libs/perfecto_libs/android_lib.py +++ b/libs/perfecto_libs/android_lib.py @@ -8,6 +8,7 @@ import sys import os import time import warnings +from _pytest.outcomes import xfail import urllib3 from perfecto.model.model import Job, Project from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory) @@ -67,113 +68,99 @@ def getDeviceModelName(setup_perfectoMobile): print("ModelName: " + deviceModel) return deviceModel -@pytest.fixture(scope="function") -def setup_perfectoMobile_android(request): - from appium import webdriver - driver = None - reporting_client = None + + +# @pytest.fixture(scope="function") +# def setup_perfectoMobile_android(request): +# from appium import webdriver +# driver = None +# reporting_client = None - warnings.simplefilter("ignore", ResourceWarning) - urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) +# warnings.simplefilter("ignore", ResourceWarning) +# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - capabilities = { - 'platformName': request.config.getini("platformName-android"), - 'model': request.config.getini("model-android"), - 'browserName': 'mobileOS', - #'automationName' : 'Appium', - 'securityToken' : request.config.getini("securityToken"), - 'useAppiumForWeb' : 'false', - 'useAppiumForHybrid' : 'false', - #'bundleId' : request.config.getini("appPackage-android"), - } +# capabilities = { +# 'platformName': request.config.getini("platformName-android"), +# 'model': request.config.getini("model-android"), +# 'browserName': 'mobileOS', +# #'automationName' : 'Appium', +# 'securityToken' : request.config.getini("securityToken"), +# 'useAppiumForWeb' : 'false', +# 'useAppiumForHybrid' : 'false', +# #'bundleId' : request.config.getini("appPackage-android"), +# } - driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) - driver.implicitly_wait(35) +# driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) +# driver.implicitly_wait(35) - TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] - nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) - try: - TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') - print ("\nTestCaseName: " + TestCaseName) - except Exception as e: - TestCaseName = nCurrentTestMethodNameSplit - print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") - print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") +# TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] +# nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) +# try: +# TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') +# print ("\nTestCaseName: " + TestCaseName) +# except Exception as e: +# TestCaseName = nCurrentTestMethodNameSplit +# print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") +# print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") - projectname = request.config.getini("projectName") - projectversion = request.config.getini("projectVersion") - jobname = request.config.getini("jobName") - jobnumber = request.config.getini("jobNumber") - tags = request.config.getini("reportTags") - testCaseName = TestCaseName +# projectname = request.config.getini("projectName") +# projectversion = request.config.getini("projectVersion") +# jobname = request.config.getini("jobName") +# jobnumber = request.config.getini("jobNumber") +# tags = request.config.getini("reportTags") +# testCaseName = TestCaseName - print("\nSetting Perfecto ReportClient....") - perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) - reporting_client = PerfectoReportiumClient(perfecto_execution_context) - reporting_client.test_start(testCaseName, TestContext([], "Perforce")) +# print("\nSetting Perfecto ReportClient....") +# perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) +# reporting_client = PerfectoReportiumClient(perfecto_execution_context) +# reporting_client.test_start(testCaseName, TestContext([], "Perforce")) - def teardown(): - reporting_client.test_stop(TestResultFactory.create_failure("See Allure Report")) - driver.close() - print("\n------------") - print("Driver Closed") - try: - driver.quit() - print("Driver Quit") - print("------------") - except Exception as e: - print(" -- Exception Not Able To Quit --") - print(e) - # try: - # # print("\n\n---------- Tear Down ----------") - # testFailed = 0 - # testFailed = request.session.testsfailed - # print("Testcase Failure Count: ", str(testFailed)) - # if testFailed>0: - # print ("Test Case Failure, please check report link: " + testCaseName) - # try: - # exceptionFailure = request.config.cache.get("SelectingWifiFailed", None) - # reporting_client.test_stop(TestResultFactory.create_failure(exceptionFailure)) - # except Exception as e: - # reporting_client.test_stop(TestResultFactory.create_failure("Test Case failed -- See perfecto reports")) - # - # seen = {None} - # session = request.node - # print(session) - # elif testFailed<=0: - # reporting_client.test_stop(TestResultFactory.create_success()) - # - # #amount = len(request.session.items) - # #print("Test Session Items: ") - # #print(amount) - # - # #tests_count = request.session.testscollected - # #print("Test Collected: ") - # #print(tests_count) - # - # # print('Report-Url: ' + reporting_client.report_url()) - # # print("----------------------------------------------------------") - # # reporting_client.test_stop() - # driver.close() - # except Exception as e: - # print(" -- Exception While Tear Down --") - # reporting_client.test_stop(TestResultFactory.create_failure(e)) - # print('Report-Url-Failure: ' + reporting_client.report_url() + '\n') - # driver.close() - # print (e) - # finally: - # try: - # driver.quit() - # except Exception as e: - # print(" -- Exception Not Able To Quit --") - # print (e) +# def teardown(): +# testFailed = 0 +# try: +# print("\n\n---------- Tear Down ----------") + +# testFailed = request.session.testsfailed + +# method_name = request.node.name +# print("MethodName: " + method_name) - request.addfinalizer(teardown) +# #print ("TestCaseName: " + TestCaseName + " & Status: " + str(testFailed)) +# #print ("TestCaseStatus: " + str(testFailed)) + +# if testFailed>0: +# print ("Test Case Failure, please check report link: " + testCaseName) +# #exceptionFailure = request.config.cache.get("SelectingWifiFailed", None) +# reporting_client.test_stop(TestResultFactory.create_failure("Failure See Perfecto Report Execution")) + +# elif testFailed<=0: +# reporting_client.test_stop(TestResultFactory.create_success()) + +# print('Report-Url: ' + reporting_client.report_url()) +# print("----------------------------------------------------------") +# driver.close() + +# except Exception as e: +# print(" -- Exception While Tear Down --") +# reporting_client.test_stop(TestResultFactory.create_failure(e)) +# print('Report-Url-Failure: ' + reporting_client.report_url() + '\n') +# driver.close() +# print (e) +# finally: +# try: +# testFailed = 0 +# driver.quit() +# except Exception as e: +# print(" -- Exception Not Able To Quit --") +# print (e) + +# request.addfinalizer(teardown) + +# if driver is None: +# yield -1 +# else: +# yield driver,reporting_client - if driver is None: - yield -1 - else: - yield driver,reporting_client def set_APconnMobileDevice_android(request, WifiName, WifiPass, setup_perfectoMobile, connData): print("\n-------------------------------------") @@ -434,9 +421,11 @@ def ForgetWifiConnection(request, setup_perfectoMobile, WifiName, connData): print("Verify if wifi is disconnected from: " + WifiName) try: report.step_start("Verify if wifi is disconnected from: " + WifiName) - WifiForget= driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']") + WifiDisconnect = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']") print("Wifi Not disconnected, check xpath for: " + WifiName) - except NoSuchElementException and Exception: + assert False + except Exception as e: + assert True print("Wifi Disconnected Successfully: " + WifiName) else: diff --git a/libs/perfecto_libs/iOS_lib.py b/libs/perfecto_libs/iOS_lib.py index 9d3464bfe..73d23cd3a 100644 --- a/libs/perfecto_libs/iOS_lib.py +++ b/libs/perfecto_libs/iOS_lib.py @@ -145,7 +145,8 @@ def set_APconnMobileDevice_iOS(request, WifiNameSSID, WifiPass, setup_perfectoMo print("Join Button Not Enabled...Verify if Password is set properly ") try: - WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text + WifiInternetErrMsg2 = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='No Internet Connection']"))) + #= driver.find_element_by_xpath("//*[@label='No Internet Connection']").text reportFlag = False except NoSuchElementException: reportFlag = True diff --git a/tests/configuration.py b/tests/configuration.py index 95e714740..baaf49d46 100644 --- a/tests/configuration.py +++ b/tests/configuration.py @@ -365,7 +365,7 @@ CONFIGURATION = { # } # } # }, - "interop": { + "interop": { "controller": { 'url': "https://wlan-portal-svc-nola-01.cicd.lab.wlan.tip.build", # API base url for the controller 'username': 'support@example.com', diff --git a/tests/conftest.py b/tests/conftest.py index 93f5deca6..40512eb22 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,6 +6,7 @@ import sys import os import time import allure +import re import logging if "logs" not in os.listdir(): @@ -585,5 +586,6 @@ def setup_influx(request, testbed, get_configuration): } yield influx_params - - +# Need for Perforce Mobile Device Execution +def pytest_sessionstart(session): + session.results = dict() \ No newline at end of file diff --git a/tests/e2e/interOp/android/AccessPointConnection/test_AccessPointConnection.py b/tests/e2e/interOp/android/AccessPointConnection/test_AccessPointConnection.py index 8577dc7dd..85d7ed930 100644 --- a/tests/e2e/interOp/android/AccessPointConnection/test_AccessPointConnection.py +++ b/tests/e2e/interOp/android/AccessPointConnection/test_AccessPointConnection.py @@ -18,7 +18,7 @@ pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_and, if 'perfecto_libs' not in sys.path: sys.path.append(f'../libs/perfecto_libs') -from android_lib import closeApp, verifyUploadDownloadSpeed_android, set_APconnMobileDevice_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, verifyUploadDownloadSpeed_android, set_APconnMobileDevice_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp setup_params_general = { "mode": "NAT", @@ -46,12 +46,11 @@ class TestAcessPointConnection(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal def test_AccessPointConnection_5g_WPA2_Personal(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -75,13 +74,12 @@ class TestAcessPointConnection(object): @pytest.mark.twog @pytest.mark.wpa2_personal - def test_AccessPointConnection_2g_WPA2_Personal(self,request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - + def test_AccessPointConnection_2g_WPA2_Personal(self,request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -105,13 +103,12 @@ class TestAcessPointConnection(object): @pytest.mark.fiveg @pytest.mark.wpa - def test_AccessPointConnection_5g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - + def test_AccessPointConnection_5g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -136,12 +133,11 @@ class TestAcessPointConnection(object): @pytest.mark.twog @pytest.mark.wpa def test_AccessPointConnection_2g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) diff --git a/tests/e2e/interOp/android/AirplaneMode/test_ToggleAirplaneMode.py b/tests/e2e/interOp/android/AirplaneMode/test_ToggleAirplaneMode.py index 411a3d655..8d4b9fcc3 100644 --- a/tests/e2e/interOp/android/AirplaneMode/test_ToggleAirplaneMode.py +++ b/tests/e2e/interOp/android/AirplaneMode/test_ToggleAirplaneMode.py @@ -18,7 +18,7 @@ if 'perfecto_libs' not in sys.path: pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.ToggleAirplaneMode] -from android_lib import closeApp, set_APconnMobileDevice_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, set_APconnMobileDevice_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp setup_params_general = { "mode": "NAT", @@ -46,12 +46,11 @@ class TestToggleAirplaneModeAndroid(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal def test_ToogleAirplaneMode_5g_WPA2_Personal(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -72,13 +71,12 @@ class TestToggleAirplaneModeAndroid(object): @pytest.mark.twog @pytest.mark.wpa2_personal - def test_ToogleAirplaneMode_2g_WPA2_Personal(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - + def test_ToogleAirplaneMode_2g_WPA2_Personal(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -99,13 +97,12 @@ class TestToggleAirplaneModeAndroid(object): @pytest.mark.fiveg @pytest.mark.wpa - def test_ToogleAirplaneMode_5g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - + def test_ToogleAirplaneMode_5g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -126,13 +123,12 @@ class TestToggleAirplaneModeAndroid(object): @pytest.mark.twog @pytest.mark.wpa - def test_ToogleAirplaneMode_2g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - + def test_ToogleAirplaneMode_2g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) diff --git a/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py b/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py index c26440b91..ebc58f34b 100644 --- a/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py +++ b/tests/e2e/interOp/android/OpenRoamingPassPoint/test_OpenRoaming_BridgeMode.py @@ -18,7 +18,7 @@ if 'perfecto_libs' not in sys.path: pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.openRoaming, pytest.mark.bridge] -from android_lib import closeApp, set_APconnMobileDevice_android, verify_APconnMobileDevice_Android, deleteOpenRoamingInstalledProfile, downloadInstallOpenRoamingProfile, verifyUploadDownloadSpeed_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, set_APconnMobileDevice_android, verify_APconnMobileDevice_Android, deleteOpenRoamingInstalledProfile, downloadInstallOpenRoamingProfile, verifyUploadDownloadSpeed_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp """ EAP Passpoint Test: BRIDGE Mode @@ -95,18 +95,13 @@ class TestOpenRoamingBridgeMode(object): downloadProfileSSID = setup_params_eap["ssid_modes"]["open"][0]["ssid_name"] downloadProfileSSIDPass = "" - #profileDownloadURL = passpoint_profile_info["profile_download_url_ios"] profileDownloadURL = "https://onboard.almondlabs.net/ttls/androidconfig.cfg" profileName = passpoint_profile_info["profile_name_on_device"] profileNameSSID = setup_params_eap["ssid_modes"]["wpa2_eap"][1]["ssid_name"] - #Delete Profile Under Settings deleteOpenRoamingInstalledProfile(request, profileName, setup_perfectoMobile_android, connData) - #ForgetWifi - #ForgetWifiConnection(request, setup_perfectoMobile_android, profileNameSSID, connData) - #Set Wifi/AP Mode set_APconnMobileDevice_android(request, downloadProfileSSID, downloadProfileSSIDPass, setup_perfectoMobile_android, connData) @@ -118,7 +113,6 @@ class TestOpenRoamingBridgeMode(object): try: verify_APconnMobileDevice_Android(request, profileNameSSID, setup_perfectoMobile_android, connData) - #Verify Upload download Speed from device Selection verifyUploadDownloadSpeed_android(request, setup_perfectoMobile_android, connData) @@ -172,12 +166,11 @@ class TestOpenRoamingBridgeMode(object): downloadProfileSSID = setup_params_eap["ssid_modes"]["open"][0]["ssid_name"] downloadProfileSSIDPass = "" - #profileDownloadURL = passpoint_profile_info["profile_download_url_ios"] profileDownloadURL = "https://onboard.almondlabs.net/ttls/androidconfig.cfg" profileName = passpoint_profile_info["profile_name_on_device"] profileNameSSID = setup_params_eap["ssid_modes"]["wpa2_eap"][1]["ssid_name"] - #Delete Profile Under Settings + #Delete Profile Under Settings deleteOpenRoamingInstalledProfile(request, profileName, setup_perfectoMobile_android, connData) #Set Wifi/AP Mode @@ -191,7 +184,6 @@ class TestOpenRoamingBridgeMode(object): try: verify_APconnMobileDevice_Android(request, profileName, setup_perfectoMobile_android, connData) - #Verify Upload download Speed from device Selection verifyUploadDownloadSpeed_android(request, setup_perfectoMobile_android, connData) @@ -211,7 +203,7 @@ class TestOpenRoamingBridgeMode(object): scope="function" ) @pytest.mark.usefixtures("push_ap_profile") - def test_wpa2_only_eap_2g(self, passpoint_profile_info, push_ap_profile, request, get_APToMobileDevice_data, setup_perfectoMobile_android): + def test_OpenRoaming_wpa2_only_eap_2g(self, passpoint_profile_info, push_ap_profile, request, get_APToMobileDevice_data, setup_perfectoMobile_android): """ EAP Passpoint BRIDGE Mode pytest -m "interop_iOS and eap_passpoint and bridge and wpa2_only_eap and twog" @@ -282,7 +274,7 @@ class TestOpenRoamingBridgeMode(object): scope="function" ) @pytest.mark.usefixtures("push_ap_profile") - def test_wpa2_only_eap_5g(self, passpoint_profile_info, push_ap_profile, request, get_APToMobileDevice_data, setup_perfectoMobile_android): + def test_OpenRoaming_wpa2_only_eap_5g(self, passpoint_profile_info, push_ap_profile, request, get_APToMobileDevice_data, setup_perfectoMobile_android): """ EAP Passpoint BRIDGE Mode pytest -m "interop_iOS and eap_passpoint and bridge and wpa2_only_eap and fiveg" @@ -311,7 +303,6 @@ class TestOpenRoamingBridgeMode(object): downloadProfileSSID = setup_params_eap["ssid_modes"]["open"][0]["ssid_name"] downloadProfileSSIDPass = "" - #profileDownloadURL = passpoint_profile_info["profile_download_url_ios"] profileDownloadURL = "https://onboard.almondlabs.net/ttls/androidconfig.cfg" profileName = passpoint_profile_info["profile_name_on_device"] profileNameSSID = setup_params_eap["ssid_modes"]["wpa2_eap"][1]["ssid_name"] @@ -319,9 +310,6 @@ class TestOpenRoamingBridgeMode(object): #Delete Profile Under Settings deleteOpenRoamingInstalledProfile(request, profileName, setup_perfectoMobile_android, connData) - #ForgetWifi - #ForgetWifiConnection(request, setup_perfectoMobile_android, profileNameSSID, connData) - #Set Wifi/AP Mode set_APconnMobileDevice_android(request, downloadProfileSSID, downloadProfileSSIDPass, setup_perfectoMobile_android, connData) @@ -333,7 +321,6 @@ class TestOpenRoamingBridgeMode(object): try: verify_APconnMobileDevice_Android(request, profileNameSSID, setup_perfectoMobile_android, connData) - #Verify Upload download Speed from device Selection verifyUploadDownloadSpeed_android(request, setup_perfectoMobile_android, connData) diff --git a/tests/e2e/interOp/android/PassPointConnection/test_PassPointConnection.py b/tests/e2e/interOp/android/PassPointConnection/test_PassPointConnection.py index fa591638b..eb12091c2 100644 --- a/tests/e2e/interOp/android/PassPointConnection/test_PassPointConnection.py +++ b/tests/e2e/interOp/android/PassPointConnection/test_PassPointConnection.py @@ -18,7 +18,7 @@ if 'perfecto_libs' not in sys.path: pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.PassPointConnection] -from android_lib import closeApp, set_APconnMobileDevice_android, verifyUploadDownloadSpeed_android, Toggle_WifiMode_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, set_APconnMobileDevice_android, verifyUploadDownloadSpeed_android, Toggle_WifiMode_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp setup_params_general = { "mode": "NAT", @@ -46,12 +46,11 @@ class TestPassPointConnection(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal def test_PassPointConnection_5g_WPA2_Personal(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -76,12 +75,11 @@ class TestPassPointConnection(object): @pytest.mark.twog @pytest.mark.wpa2_personal def test_PassPointConnection_2g_WPA2_Personal(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -106,12 +104,11 @@ class TestPassPointConnection(object): @pytest.mark.fiveg @pytest.mark.wpa def test_PassPointConnection_5g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -136,12 +133,11 @@ class TestPassPointConnection(object): @pytest.mark.twog @pytest.mark.wpa def test_PassPointConnection_2g_WPA(self, request, get_vif_state, get_ToggleAirplaneMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) diff --git a/tests/e2e/interOp/android/WifiMode/test_ToggleWifiMode.py b/tests/e2e/interOp/android/WifiMode/test_ToggleWifiMode.py index 3c36497c9..9f516e04f 100644 --- a/tests/e2e/interOp/android/WifiMode/test_ToggleWifiMode.py +++ b/tests/e2e/interOp/android/WifiMode/test_ToggleWifiMode.py @@ -18,7 +18,7 @@ if 'perfecto_libs' not in sys.path: pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.interop_and, pytest.mark.android, pytest.mark.ToggleWifiMode] -from android_lib import closeApp, set_APconnMobileDevice_android, Toggle_WifiMode_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, set_APconnMobileDevice_android, Toggle_WifiMode_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp setup_params_general = { "mode": "NAT", @@ -45,13 +45,12 @@ class TestToggleWifiMode(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal - def test_ToogleWifiMode_5g_WPA2_Personal(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): - + def test_ToogleWifiMode_5g_WPA2_Personal(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -73,12 +72,11 @@ class TestToggleWifiMode(object): @pytest.mark.twog @pytest.mark.wpa2_personal def test_ToogleWifiMode_2g_WPA2_Personal(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -100,12 +98,11 @@ class TestToggleWifiMode(object): @pytest.mark.fiveg @pytest.mark.wpa def test_ToogleWifiMode_5g_WPA(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -126,13 +123,12 @@ class TestToggleWifiMode(object): @pytest.mark.twog @pytest.mark.wpa - def test_ToogleWifiMode_2g_WPA(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): - + def test_ToogleWifiMode_2g_WPA(self, request, get_vif_state, get_ToggleWifiMode_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) diff --git a/tests/e2e/interOp/android/client_connectivity/test_NatMode.py b/tests/e2e/interOp/android/client_connectivity/test_NatMode.py index a903be39f..3829f2bb6 100644 --- a/tests/e2e/interOp/android/client_connectivity/test_NatMode.py +++ b/tests/e2e/interOp/android/client_connectivity/test_NatMode.py @@ -18,7 +18,7 @@ if 'perfecto_libs' not in sys.path: pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.ClientConnectivity] -from android_lib import closeApp, set_APconnMobileDevice_android, verifyUploadDownloadSpeed_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp, setup_perfectoMobile_android +from android_lib import closeApp, set_APconnMobileDevice_android, verifyUploadDownloadSpeed_android, Toggle_AirplaneMode_android, ForgetWifiConnection, openApp setup_params_general = { "mode": "NAT", @@ -46,12 +46,11 @@ class TestNatMode(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal def test_ClientConnectivity_5g_WPA2_Personal(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -63,7 +62,7 @@ class TestNatMode(object): #Set Wifi/AP Mode set_APconnMobileDevice_android(request, ssidName, ssidPassword, setup_perfectoMobile_android, connData) - + #Verify Upload download Speed from device Selection assert verifyUploadDownloadSpeed_android(request, setup_perfectoMobile_android, connData) @@ -72,17 +71,16 @@ class TestNatMode(object): @pytest.mark.twog @pytest.mark.wpa2_personal - def test_ClientConnectivity_2g_WPA2_Personal(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - + def test_ClientConnectivity_2g_WPA2_Personal(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: - allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) - pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") report = setup_perfectoMobile_android[1] driver = setup_perfectoMobile_android[0] @@ -97,15 +95,42 @@ class TestNatMode(object): #ForgetWifi ForgetWifiConnection(request, setup_perfectoMobile_android, ssidName, connData) + @pytest.mark.twog @pytest.mark.wpa def test_ClientConnectivity_2g_WPA(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) + + if ssidName not in get_vif_state: + allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) + pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") + + report = setup_perfectoMobile_android[1] + driver = setup_perfectoMobile_android[0] + connData = get_APToMobileDevice_data + + #Set Wifi/AP Mode + set_APconnMobileDevice_android(request, ssidName, ssidPassword, setup_perfectoMobile_android, connData) + + #Toggle AirplaneMode + assert Toggle_AirplaneMode_android(request, setup_perfectoMobile_android, connData) + + #ForgetWifi + ForgetWifiConnection(request, setup_perfectoMobile_android, ssidName, connData) + + + @pytest.mark.fiveg + @pytest.mark.wpa + def test_ClientConnectivity_5g_WPA(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): + profile_data = setup_params_general["ssid_modes"]["wpa"][1] + ssidName = profile_data["ssid_name"] + ssidPassword = profile_data["security_key"] + print ("SSID_NAME: " + ssidName) + #print ("SSID_PASS: " + ssidPassword) if ssidName not in get_vif_state: allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) @@ -124,29 +149,3 @@ class TestNatMode(object): #ForgetWifi ForgetWifiConnection(request, setup_perfectoMobile_android, ssidName, connData) - @pytest.mark.fiveg - @pytest.mark.wpa - def test_ClientConnectivity_5g_WPA(self, request, get_vif_state, get_APToMobileDevice_data, setup_perfectoMobile_android): - - profile_data = setup_params_general["ssid_modes"]["wpa"][1] - ssidName = profile_data["ssid_name"] - ssidPassword = profile_data["security_key"] - print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) - - if ssidName not in get_vif_state: - allure.attach(name="retest,vif state ssid not available:", body=str(get_vif_state)) - pytest.xfail("SSID NOT AVAILABLE IN VIF STATE") - - report = setup_perfectoMobile_android[1] - driver = setup_perfectoMobile_android[0] - connData = get_APToMobileDevice_data - - #Set Wifi/AP Mode - set_APconnMobileDevice_android(request, ssidName, ssidPassword, setup_perfectoMobile_android, connData) - - #Toggle AirplaneMode - assert Toggle_AirplaneMode_android(request, setup_perfectoMobile_android, connData) - - #ForgetWifi - ForgetWifiConnection(request, setup_perfectoMobile_android, ssidName, connData) \ No newline at end of file diff --git a/tests/e2e/interOp/conftest.py b/tests/e2e/interOp/conftest.py index 0f6e6d2ad..1f9371b6c 100644 --- a/tests/e2e/interOp/conftest.py +++ b/tests/e2e/interOp/conftest.py @@ -39,167 +39,11 @@ from configuration import CONFIGURATION from urllib3 import exceptions -@pytest.fixture(scope="class") -def setup_perfectoMobileWeb(request): - from selenium import webdriver - rdriver = None - reporting_client = None - - warnings.simplefilter("ignore", ResourceWarning) - urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - - capabilities = { - 'platformName': request.config.getini("platformName-iOS"), - 'model': request.config.getini("model-iOS"), - 'browserName': request.config.getini("browserType-iOS"), - 'securityToken' : request.config.getini("securityToken"), - } - - rdriver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) - rdriver.implicitly_wait(35) - - projectname = request.config.getini("projectName") - projectversion = request.config.getini("projectVersion") - jobname = request.config.getini("jobName") - jobnumber = request.config.getini("jobNumber") - tags = request.config.getini("reportTags") - testCaseName = request.config.getini("jobName") - - print("Setting Perfecto ReportClient....") - perfecto_execution_context = PerfectoExecutionContext(rdriver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) - reporting_client = PerfectoReportiumClient(perfecto_execution_context) - reporting_client.test_start(testCaseName, TestContext([], "Perforce")) - - def teardown(): - try: - print(" -- Tear Down --") - reporting_client.test_stop(TestResultFactory.create_success()) - print('Report-Url: ' + reporting_client.report_url() + '\n') - rdriver.close() - except Exception as e: - print(" -- Exception Not Able To close --") - print (e.message) - finally: - try: - rdriver.quit() - except Exception as e: - print(" -- Exception Not Able To Quit --") - print (e.message) - - request.addfinalizer(teardown) - - if rdriver is None: - yield -1 - else: - yield rdriver,reporting_client - - -@pytest.fixture(scope="function") -def setup_perfectoMobile_iOS(request): - from appium import webdriver - driver = None - reporting_client = None - - warnings.simplefilter("ignore", ResourceWarning) - urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - - capabilities = { - 'platformName': request.config.getini("platformName-iOS"), - 'model': request.config.getini("model-iOS"), - 'browserName': 'safari', - #'automationName' : 'Appium', - 'securityToken' : request.config.getini("securityToken"), - 'useAppiumForWeb' : 'false', - 'autoAcceptAlerts' : 'true', - #'bundleId' : request.config.getini("bundleId-iOS"), - 'useAppiumForHybrid' : 'false', - } - - driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) - driver.implicitly_wait(35) - - TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] - nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) - try: - TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') - print ("\nTestCaseName: " + TestCaseName) - except Exception as e: - TestCaseName = nCurrentTestMethodNameSplit - print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") - print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") - - projectname = request.config.getini("projectName") - projectversion = request.config.getini("projectVersion") - jobname = request.config.getini("jobName") - jobnumber = request.config.getini("jobNumber") - tags = request.config.getini("reportTags") - testCaseName = TestCaseName - - print("\nSetting Perfecto ReportClient....") - perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) - reporting_client = PerfectoReportiumClient(perfecto_execution_context) - reporting_client.test_start(testCaseName, TestContext([], "Perforce")) - - def teardown(): - reporting_client.test_stop(TestResultFactory.create_failure("See Allure Report")) - driver.close() - print("\n------------") - print("Driver Closed") - try: - driver.quit() - print("Driver Quit") - print("------------") - except Exception as e: - print(" -- Exception Not Able To Quit --") - print(e) - - # try: - # print("\n\n---------- Tear Down ----------") - # - # testFailed = request.session.testsfailed - # if testFailed>0: - # print ("Test Case Failure, please check report link: " + testCaseName) - # reporting_client.test_stop(TestResultFactory.create_failure(request.config.cache.get("SelectingWifiFailed", None))) - # request.config.cache.set(key="SelectingWifiFailed", value="Cache Cleared!!") - # #seen = {None} - # #session = request.node - # #print(session) - # elif testFailed<=0: - # reporting_client.test_stop(TestResultFactory.create_success()) - # - # #amount = len(request.session.items) - # #print("Test Session Items: ") - # #print(amount) - # - # #tests_count = request.session.testscollected - # #print("Test Collected: ") - # #print(tests_count) - # - # print('Report-Url: ' + reporting_client.report_url()) - # print("----------------------------------------------------------") - # driver.close() - # except Exception as e: - # print(" -- Exception While Tear Down --") - # reporting_client.test_stop(TestResultFactory.create_failure("Exception")) - # print('Report-Url-Failure: ' + reporting_client.report_url() + '\n') - # - # driver.close() - # - # print (e) - # finally: - # try: - # driver.quit() - # except Exception as e: - # print(" -- Exception Not Able To Quit --") - # print (e) - - - request.addfinalizer(teardown) - - if driver is None: - yield -1 - else: - yield driver,reporting_client +reporting_client = None +testCaseNameList = [] +testCaseStatusList = [] +testCaseErrorMsg = [] +testCaseReportURL = [] @pytest.fixture(scope="function") @@ -775,3 +619,296 @@ def get_vif_state(get_apnos, get_configuration): vif_state.sort() allure.attach(name="vif_state", body=str(vif_state)) yield vif_state + + + +@pytest.hookimpl(tryfirst=True, hookwrapper=True) +def pytest_runtest_makereport(item, call): + outcome = yield + result = outcome.get_result() + #testCaseStatusValue = "" + testCasePassedStatusValue = "" + testCaseFailedStatusValue = "" + testCaseNameList = [] + testCaseStatusList = [] + testCaseErrorMsg = [] + testCaseReportURL = [] + + if result.when == 'call': + item.session.results[item] = result + + #Gets the Current Test Case Name + TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] + nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) + #print("TestCasefullNameTEST: " + TestCaseFullName) + try: + #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') + TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '') + #print ("\nTestCaseName: " + TestCaseName) + except Exception as e: + TestCaseName = nCurrentTestMethodNameSplit + print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") + #print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") + + if result.outcome == "failed": + testCaseFailedStatusValue = "FAILED" + exception = call.excinfo.value + exception_class = call.excinfo.type + exception_class_name = call.excinfo.typename + exception_type_and_message_formatted = call.excinfo.exconly() + exception_traceback = call.excinfo.traceback + + reporting_client.test_stop(TestResultFactory.create_failure(str(testCaseErrorMsg))) + testCaseNameList.append(TestCaseName) + testCaseStatusList.append(testCaseFailedStatusValue) + testCaseErrorMsg.append(exception_type_and_message_formatted) + testCaseReportURL.append(reporting_client.report_url()) + + print("\n TestStatus: " + testCaseFailedStatusValue) + print(" FailureMsg: " + str(testCaseErrorMsg)) + reportPerfecto(TestCaseName, testCaseFailedStatusValue, testCaseErrorMsg, str(reporting_client.report_url())) + + if result.outcome == "passed": + testCasePassedStatusValue = "PASSED" + reporting_client.test_stop(TestResultFactory.create_success()) + testCaseNameList.append(TestCaseName) + testCaseStatusList.append(testCasePassedStatusValue) + testCaseReportURL.append(reporting_client.report_url()) + print("\n TestStatus: " + testCasePassedStatusValue) + reportPerfecto(TestCaseName, testCasePassedStatusValue, "N/A", str(reporting_client.report_url())) + +def pytest_sessionfinish(session, exitstatus): + + print() + #print('Perfecto TestCase Execution Status:', exitstatus) + passed_amount = sum(1 for result in session.results.values() if result.passed) + failed_amount = sum(1 for result in session.results.values() if result.failed) + # print(f'There are {passed_amount} passed and {failed_amount} failed tests') + TotalExecutedCount = failed_amount + passed_amount + + print('\n------------------------------------') + print('Perfecto TestCase Execution Summary') + print('------------------------------------') + print('Total TestCase Executed: ' + str(TotalExecutedCount)) + print('Total Passed: ' + str(passed_amount)) + print('Total Failed: ' + str(failed_amount) + "\n") + + for index in range(len(testCaseNameList)): + print(str(index+1) + ") " + str(testCaseNameList[index]) + " : " + str(testCaseStatusList[index])) + print(" ReportURL: " + str(testCaseReportURL[index])) + print(" FailureMsg: " + str(testCaseErrorMsg[index]) + "\n") + + print('------------------------------------------------------------------\n\n\n\n') + +@pytest.fixture(scope="function") +def setup_perfectoMobile_android(request): + from appium import webdriver + driver = None + reporting_client = None + + warnings.simplefilter("ignore", ResourceWarning) + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + capabilities = { + 'platformName': request.config.getini("platformName-android"), + 'model': request.config.getini("model-android"), + 'browserName': 'mobileOS', + #'automationName' : 'Appium', + 'securityToken' : request.config.getini("securityToken"), + 'useAppiumForWeb' : 'false', + 'useAppiumForHybrid' : 'false', + #'bundleId' : request.config.getini("appPackage-android"), + } + + driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) + driver.implicitly_wait(35) + + TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] + nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) + try: + #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') + TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '') + print ("\n\nExecuting TestCase: " + TestCaseName) + except Exception as e: + TestCaseName = nCurrentTestMethodNameSplit + print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") + #print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") + + projectname = request.config.getini("projectName") + projectversion = request.config.getini("projectVersion") + jobname = request.config.getini("jobName") + jobnumber = request.config.getini("jobNumber") + tags = request.config.getini("reportTags") + testCaseName = TestCaseName + + #print("\nSetting Perfecto ReportClient....") + perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) + reporting_client = PerfectoReportiumClient(perfecto_execution_context) + reporting_client.test_start(testCaseName, TestContext([], "Perforce")) + reportClient(reporting_client) + + def teardown(): + try: + print("\n---------- Tear Down ----------") + print('Report-Url: ' + reporting_client.report_url()) + print("----------------------------------------------------------\n\n\n\n") + driver.close() + except Exception as e: + print(" -- Exception While Tear Down --") + driver.close() + print (e) + finally: + try: + driver.quit() + except Exception as e: + print(" -- Exception Not Able To Quit --") + print (e) + + request.addfinalizer(teardown) + + if driver is None: + yield -1 + else: + yield driver,reporting_client + +def reportClient(value): + global reporting_client # declare a to be a global + reporting_client = value # this sets the global value of a + +def reportPerfecto(testCaseName, testCaseStatus, testErrorMsg, reportURL): + global testCaseNameList # declare a to be a global + global testCaseStatusList + global testCaseErrorMsg + global testCaseReportURL + + testCaseNameList.append(testCaseName) + testCaseStatusList.append(testCaseStatus) + testCaseErrorMsg.append(str(testErrorMsg)) + testCaseReportURL.append(reportURL) + +@pytest.fixture(scope="class") +def setup_perfectoMobileWeb(request): + from selenium import webdriver + rdriver = None + reporting_client = None + + warnings.simplefilter("ignore", ResourceWarning) + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + capabilities = { + 'platformName': request.config.getini("platformName-iOS"), + 'model': request.config.getini("model-iOS"), + 'browserName': request.config.getini("browserType-iOS"), + 'securityToken' : request.config.getini("securityToken"), + } + + rdriver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) + rdriver.implicitly_wait(35) + + projectname = request.config.getini("projectName") + projectversion = request.config.getini("projectVersion") + jobname = request.config.getini("jobName") + jobnumber = request.config.getini("jobNumber") + tags = request.config.getini("reportTags") + testCaseName = request.config.getini("jobName") + + print("Setting Perfecto ReportClient....") + perfecto_execution_context = PerfectoExecutionContext(rdriver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) + reporting_client = PerfectoReportiumClient(perfecto_execution_context) + reporting_client.test_start(testCaseName, TestContext([], "Perforce")) + + def teardown(): + try: + print(" -- Tear Down --") + reporting_client.test_stop(TestResultFactory.create_success()) + print('Report-Url: ' + reporting_client.report_url() + '\n') + rdriver.close() + except Exception as e: + print(" -- Exception Not Able To close --") + print (e.message) + finally: + try: + rdriver.quit() + except Exception as e: + print(" -- Exception Not Able To Quit --") + print (e.message) + + request.addfinalizer(teardown) + + if rdriver is None: + yield -1 + else: + yield rdriver,reporting_client + +@pytest.fixture(scope="function") +def setup_perfectoMobile_iOS(request): + from appium import webdriver + driver = None + reporting_client = None + + warnings.simplefilter("ignore", ResourceWarning) + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + capabilities = { + 'platformName': request.config.getini("platformName-iOS"), + 'model': request.config.getini("model-iOS"), + 'browserName': 'safari', + #'automationName' : 'Appium', + 'securityToken' : request.config.getini("securityToken"), + 'useAppiumForWeb' : 'false', + 'autoAcceptAlerts' : 'true', + #'bundleId' : request.config.getini("bundleId-iOS"), + 'useAppiumForHybrid' : 'false', + } + + driver = webdriver.Remote('https://'+request.config.getini("perfectoURL")+'.perfectomobile.com/nexperience/perfectomobile/wd/hub', capabilities) + driver.implicitly_wait(35) + + TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] + nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName) + try: + #TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_') + TestCaseName = nCurrentTestMethodNameSplit.replace('test_', '') + print ("\n\nExecuting TestCase: " + TestCaseName) + except Exception as e: + TestCaseName = nCurrentTestMethodNameSplit + print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL") + #print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/") + + projectname = request.config.getini("projectName") + projectversion = request.config.getini("projectVersion") + jobname = request.config.getini("jobName") + jobnumber = request.config.getini("jobNumber") + tags = request.config.getini("reportTags") + testCaseName = TestCaseName + + print("\nSetting Perfecto ReportClient....") + perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),Project(projectname, projectversion)) + reporting_client = PerfectoReportiumClient(perfecto_execution_context) + reporting_client.test_start(testCaseName, TestContext([], "Perforce")) + reportClient(reporting_client) + + def teardown(): + try: + print("\n---------- Tear Down ----------") + print('Report-Url: ' + reporting_client.report_url()) + print("----------------------------------------------------------\n\n\n\n") + driver.close() + except Exception as e: + print(" -- Exception While Tear Down --") + driver.close() + print (e) + finally: + try: + driver.quit() + except Exception as e: + print(" -- Exception Not Able To Quit --") + print (e) + + request.addfinalizer(teardown) + + if driver is None: + yield -1 + else: + yield driver,reporting_client + diff --git a/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py b/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py index e54dbc8b6..2107cce10 100644 --- a/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py +++ b/tests/e2e/interOp/iOS/AccessPointConnection/test_AccessPointConnection.py @@ -19,7 +19,7 @@ if 'perfecto_libs' not in sys.path: from iOS_lib import closeApp, openApp, get_WifiIPAddress_iOS, ForgetWifiConnection, ping_deftapps_iOS, Toggle_AirplaneMode_iOS, set_APconnMobileDevice_iOS, verify_APconnMobileDevice_iOS, Toggle_WifiMode_iOS, tearDown -pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.ios, pytest.mark.interop_ios, pytest.mark.AccessPassPointConnectivety] +pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.ios, pytest.mark.interop_ios, pytest.mark.AccessPointConnection] setup_params_general = { "mode": "NAT", @@ -46,14 +46,12 @@ class TestAccessPointConnectivety(object): @pytest.mark.fiveg @pytest.mark.wpa2_personal - def test_AccessPointConnection_5g_WPA2_Personal(self, request, get_AccessPointConn_data, setup_perfectoMobile_iOS): - + def test_AccessPointConnection_5g_WPA2_Personal(self, request, get_AccessPointConn_data, setup_perfectoMobile_iOS): profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] - print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) report = setup_perfectoMobile_iOS[1] driver = setup_perfectoMobile_iOS[0] @@ -76,12 +74,11 @@ class TestAccessPointConnectivety(object): @pytest.mark.twog @pytest.mark.wpa2_personal def test_AccessPointConnection_2g_WPA2_Personal(self, request, get_AccessPointConn_data, setup_perfectoMobile_iOS): - profile_data = setup_params_general["ssid_modes"]["wpa2_personal"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) + #print ("SSID_PASS: " + ssidPassword) report = setup_perfectoMobile_iOS[1] driver = setup_perfectoMobile_iOS[0] @@ -104,13 +101,11 @@ class TestAccessPointConnectivety(object): @pytest.mark.fiveg @pytest.mark.wpa def test_AccessPointConnection_5g_WPA(self, request, get_AccessPointConn_data, setup_perfectoMobile_iOS): - profile_data = setup_params_general["ssid_modes"]["wpa"][1] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) - + #print ("SSID_PASS: " + ssidPassword) report = setup_perfectoMobile_iOS[1] driver = setup_perfectoMobile_iOS[0] connData = get_AccessPointConn_data @@ -132,13 +127,12 @@ class TestAccessPointConnectivety(object): @pytest.mark.twog @pytest.mark.wpa def test_AccessPointConnection_2g_WPA(self, request, get_AccessPointConn_data, setup_perfectoMobile_iOS): - profile_data = setup_params_general["ssid_modes"]["wpa"][0] ssidName = profile_data["ssid_name"] ssidPassword = profile_data["security_key"] print ("SSID_NAME: " + ssidName) - print ("SSID_PASS: " + ssidPassword) - + #print ("SSID_PASS: " + ssidPassword) + report = setup_perfectoMobile_iOS[1] driver = setup_perfectoMobile_iOS[0] connData = get_AccessPointConn_data