Added a test for scraping the promotions and exporting them to xlsx files.

This commit is contained in:
KorenLazar
2021-08-16 23:09:10 +03:00
parent 1a88ed6e01
commit c1281cb312
2 changed files with 86 additions and 0 deletions

View File

@@ -21,6 +21,8 @@ from supermarket_chain import SupermarketChain
XML_FILES_PROMOTIONS_CATEGORIES = [SupermarketChain.XMLFilesCategory.PromosFull, XML_FILES_PROMOTIONS_CATEGORIES = [SupermarketChain.XMLFilesCategory.PromosFull,
SupermarketChain.XMLFilesCategory.Promos] SupermarketChain.XMLFilesCategory.Promos]
PROMOTION_COLS_NUM = 15 # The length of the list returned by get_promotion_row_for_table function
INVALID_OR_UNKNOWN_PROMOTION_FUNCTION = -1 INVALID_OR_UNKNOWN_PROMOTION_FUNCTION = -1
PROMOTIONS_TABLE_HEADERS = [ PROMOTIONS_TABLE_HEADERS = [

View File

@@ -0,0 +1,84 @@
import logging
import os
import pytest
from tqdm import tqdm
import pandas as pd
from chains.bareket import Bareket
from chains.co_op import CoOp
from chains.dor_alon import DorAlon
from chains.freshmarket import Freshmarket
from chains.hazi_hinam import HaziHinam
from chains.keshet import Keshet
from chains.maayan2000 import Maayan2000
from chains.mahsaneiHashook import MahsaneiHashook
from chains.shuk_hayir import ShukHayir
from chains.stop_market import StopMarket
from chains.tiv_taam import TivTaam
from chains.zol_vebegadol import ZolVebegadol
from promotion import PROMOTION_COLS_NUM, main_latest_promos
from supermarket_chain import SupermarketChain
from chains import (
bareket,
mahsaneiHashook,
dor_alon,
freshmarket,
hazi_hinam,
keshet,
stop_market,
tiv_taam,
shufersal,
co_op,
victory,
yohananof,
zol_vebegadol,
rami_levi,
osher_ad,
maayan2000,
shuk_hayir,
king_store,
shefa_birkat_hashem,
)
pytest.main(args=['-s', os.path.abspath(__file__)])
chain_dict = {repr(chain): chain() if callable(chain) else None for chain in SupermarketChain.__subclasses__()}
MIN_NUM_OF_PROMOS = 3
def test_scraping():
filename = 'temp.xlsx'
for chain_name, chain in tqdm(chain_dict.items(), desc='chains'):
if chain_name in [repr(Maayan2000), repr(ZolVebegadol), repr(ShukHayir)]:
continue
logging.info(f'Test scraping promotions from {chain_name}')
if chain_name == repr(DorAlon):
store_id = 501
elif chain_name in [repr(Keshet), repr(TivTaam), repr(Bareket), repr(ZolVebegadol)]:
store_id = 2
elif chain_name == repr(CoOp):
store_id = 202
elif chain_name == repr(ShukHayir):
store_id = 4
elif chain_name == repr(StopMarket):
store_id = 5
else:
store_id = 1
try:
main_latest_promos(
store_id=store_id,
output_filename=filename,
chain=chain,
load_promos=False,
load_xml=False
)
df = pd.read_excel(filename)
except Exception as e:
logging.error(e)
logging.info(f"Failed loading excel of {chain_name}")
raise
assert df.shape[0] > MIN_NUM_OF_PROMOS and df.shape[1] == PROMOTION_COLS_NUM, f"Failed scraping {chain_name}"