# import logging # import pytest # # from app.api_client import ApiClient # from ui_automation_framework.utils import AppConfig # from ui_automation_framework.utils import logger as cl # import pandas # import numpy as np # import time # # # # dates = [("2019-04-01", "2019-06-30")] # # isrcs = ["USSM10804556"] # # markets = ["us"] # # # dates = [("2017-07-01", "2018-12-11")] # # isrcs = ['USSM10804556'] # # markets = ["us"] # # # # dates = [("2019-07-01", "2019-12-31"), ("2020-01-01", "2020-09-01")] # # isrcs = ["QM6P41952433"] # # markets = ["jp"] # # # # dates = [("2020-04-01", "2020-09-01")] # # isrcs = ["QZES71982312"] # # markets = [ "au"] # # # # dates = [("2020-01-01", "2020-09-01")] # # isrcs = ["USSM11914962"] # # markets = ["gl"] # # # dates = [("2020-08-31", "2020-08-31")] # isrcs = ['USSD12000190'] # markets = ["worldwide"] # # log = cl.Logger(logging.DEBUG) # # api_client = ApiClient(AppConfig.get("api_auth_url"), AppConfig.get("qa_api_url"), 5000) # # # @pytest.mark.skip(reason="test run on a request with specific data") # @pytest.mark.parametrize(("start_date", "end_date"), dates) # @pytest.mark.parametrize("market", markets) # @pytest.mark.parametrize("isrc", isrcs) # def test_spotify_demographics_and_consumer_analytics_comparsion(market, start_date, end_date, isrc): # token_mobile = api_client.authorize() # # delphi_data = api_client.get_spotify_demographics_delphi(isrc, start_date, end_date, market, token_mobile)[ # 'body'][0]['age_bands'] # # cons_analytics = api_client.get_spotify_demographics_consumer_analytics(isrc, start_date, end_date, # 'gl', token_mobile) # cons_analytics_data_raw = calculate_spotify_ca__output(cons_analytics['body']) # cons_analytics_data = {} # # for k, v in cons_analytics_data_raw.items(): # cons_analytics_data.update({v.get('header'): v.get('value')}) # # result_dict = {} # for key, value in delphi_data.items(): # try: # result_dict.update({key: [delphi_data[key], cons_analytics_data[key]]}) # except KeyError: # result_dict.update({key: [delphi_data[key], None]}) # # ca_values = [] # delphi_values = [] # for key, value in result_dict.items(): # ca_values.append(value[1]) # for key, value in result_dict.items(): # delphi_values.append(value[0]) # # df = pandas.DataFrame({'consumer analytics': ca_values, 'delphi': delphi_values}, index=list(result_dict.keys())) # # conditions = [ # df['consumer analytics'] > df['delphi'], # df['consumer analytics'] < df['delphi'], # df['consumer analytics'] == df['delphi'], # df['consumer analytics'].isnull()] # choices = [((df['consumer analytics'] - df['delphi']) / df['consumer analytics']) * 100, ((df['delphi'] - df['consumer analytics']) / df['consumer analytics']) * 100, 'no change', 'no CA data for the field'] # # df['% diff'] = np.select(conditions, choices, default='NaN') # df.sort_values(by=df.columns[0], inplace=True) # df.to_excel('spotify_result_{}_{}_{}-{}.xlsx'.format(isrc, market, start_date, end_date)) # # # time.sleep(10) # # # @pytest.mark.skip(reason="test run on a request with specific data") # @pytest.mark.parametrize(("start_date", "end_date"), dates) # @pytest.mark.parametrize("market", markets) # @pytest.mark.parametrize("isrc", isrcs) # def test_apple_demographics_and_consumer_analytics_comparsion(market, start_date, end_date, isrc): # token_mobile = api_client.authorize() # delphi_data = api_client.get_apple_demographics_delphi(isrc, start_date, end_date, market, token_mobile)[ # 'body'][0]['age_bands'] # ca_data = api_client.get_apple_demographics_consumer_analytics(isrc, start_date, end_date, 'gl', token_mobile)['body']['items'] # cons_analytics_data = calculate_apple_ca__output(ca_data, market) # # result_dict = {} # for k, v in delphi_data.items(): # key='' # if k == 'female_18_24': # key = 'streams_gender_female_age_18_24' # elif k == 'male_18_24': # key = 'streams_gender_male_age_18_24' # elif k == 'unknown_18_24': # key = 'streams_gender_unknown_age_18_24' # elif k == 'female_25_34': # key = 'streams_gender_female_age_25_34' # elif k == 'male_25_34': # key = 'streams_gender_male_age_25_34' # elif k == 'unknown_25_34': # key = 'streams_gender_unknown_age_25_34' # elif k == 'female_35_44': # key = 'streams_gender_female_age_35_44' # elif k == 'male_35_44': # key = 'streams_gender_male_age_35_44' # elif k == 'unknown_35_44': # key = 'streams_gender_unknown_age_35_44' # elif k == 'female_45_54': # key = 'streams_gender_female_age_45_54' # elif k == 'male_45_54': # key = 'streams_gender_male_age_45_54' # elif k == 'unknown_45_54': # key = 'streams_gender_unknown_age_45_54' # elif k == 'female_55_64': # key = 'streams_gender_female_age_55_64' # elif k == 'male_55_64': # key = 'streams_gender_male_age_55_64' # elif k == 'unknown_55_64': # key = 'streams_gender_unknown_age_55_64' # elif k == 'male_65_plus': # key = 'streams_gender_male_age_65_plus' # elif k == 'female_65_plus': # key = 'streams_gender_female_age_65_plus' # elif k == 'unknown_65_plus': # key = 'streams_gender_unknown_age_65_plus' # elif k == 'unknown_unknown': # key = 'streams_gender_unknown_age_unknown' # elif k == 'unknown_0_17': # key = 'streams_gender_unknown_age_0_17' # elif k == 'male_0_17': # key = 'streams_gender_male_age_0_17' # elif k == 'female_0_17': # key = 'streams_gender_female_age_0_17' # # try: # result_dict.update({k: [delphi_data[k], cons_analytics_data[key]]}) # except KeyError: # result_dict.update({k: [delphi_data[k], None]}) # # ca_values = [] # delphi_values = [] # for key, value in result_dict.items(): # ca_values.append(value[1]) # for key, value in result_dict.items(): # delphi_values.append(value[0]) # # df = pandas.DataFrame({'consumer analytics': ca_values, 'delphi': delphi_values}, index=list(result_dict.keys())) # # conditions = [ # df['consumer analytics'] > df['delphi'], # df['consumer analytics'] < df['delphi'], # df['consumer analytics'] == df['delphi'], # df['consumer analytics'].isnull()] # choices = [((df['consumer analytics'] - df['delphi']) / df['consumer analytics']) * 100, ((df['delphi'] - df['consumer analytics']) / df['consumer analytics']) * 100, 'no change', 'no CA data for the field'] # # df['% diff'] = np.select(conditions, choices, default='NaN') # df.sort_values(by=df.columns[0], inplace=True) # df.to_excel('apple_result_{}_{}_{}-{}.xlsx'.format(isrc, market, start_date, end_date)) # # # # time.sleep(10) # # # @pytest.mark.skip(reason="test run on a request with specific data") # # @pytest.mark.parametrize(("start_date", "end_date"), dates) # # @pytest.mark.parametrize("market", markets) # # @pytest.mark.parametrize("isrc", isrcs) # # def test_apple_2_demographics_and_consumer_analytics_comparsion(market, start_date, end_date, isrc): # # token_mobile = api_client.authorize() # # # # delphi_data = api_client.get_apple_demographics_delphi(isrc, start_date, end_date, market, token_mobile)[ # # 'body'][0]['age_bands'] # # # # cons_analytics = api_client.get_apple_demographics_consumer_analytics(isrc, start_date, end_date, # # market, token_mobile) # # ca_data = \ # # api_client.get_apple_demographics_consumer_analytics(isrc, start_date, # # end_date, market, # # token_mobile)['body'][ # # 'items'] # # cons_analytics_data_raw = calculate_apple_ca__output(ca_data, market) # # cons_analytics_data = {} # # # # for k, v in cons_analytics_data_raw.items(): # # cons_analytics_data.update({v.get('header'): v.get('value')}) # # # # result_dict = {} # # for key, value in delphi_data.items(): # # try: # # result_dict.update({key: [delphi_data[key], cons_analytics_data[key]]}) # # except KeyError: # # result_dict.update({key: [delphi_data[key], None]}) # # # # ca_values = [] # # delphi_values = [] # # for key, value in result_dict.items(): # # ca_values.append(value[1]) # # for key, value in result_dict.items(): # # delphi_values.append(value[0]) # # # # df = pandas.DataFrame({'consumer analytics': ca_values, 'delphi': delphi_values}, index=list(result_dict.keys())) # # # # conditions = [ # # df['consumer analytics'] > df['delphi'], # # df['consumer analytics'] < df['delphi'], # # df['consumer analytics'] == df['delphi'], # # df['consumer analytics'].isnull()] # # choices = [((df['consumer analytics'] - df['delphi']) / df['consumer analytics']) * 100, ((df['delphi'] - df['consumer analytics']) / df['consumer analytics']) * 100, 'no change', 'no CA data for the field'] # # # # df['% diff'] = np.select(conditions, choices, default='NaN') # # df.sort_values(by=df.columns[0], inplace=True) # # df.to_excel('apple_result_{}_{}_{}-{}.xlsx'.format(isrc, market, start_date, end_date)) # # def calculate_spotify_ca__output(json_raw): # data = json_raw # object_len = data[0] # i = 1 # stack = {} # while i < len(data): # if i > object_len: # if isinstance(data[i], int): # key = i # # while key > object_len: # key -= object_len # # stack[key]["value"] += data[i] # else: # stack[i] = { # "header": data[i], # "value": 0 # } # i += 1 # return stack # # def calculate_apple_ca__output(json_raw, market): # stack = {} # for item in json_raw: # if market in item['countryCode']: # for k, v in item.items(): # if k == 'countryCode' or k == 'date' or k == 'isrc': # pass # else: # stack[k] = stack.get(k, 0) + v # else: # pass # return stack