Best Python code snippet using slash
TD1_Lib_MasterLogger.py
Source:TD1_Lib_MasterLogger.py  
...12"""13# User Defined Project Directory14MASTER_LOGGER_MAIN_DIR = None15main_dir = MASTER_LOGGER_MAIN_DIR if MASTER_LOGGER_MAIN_DIR is not None else MAIN_DIR16def get_log_dir():17    """18    Gets the Master Log File Directory.19    No Params Required.20    """21    log_name = "Master_Log.log"22    log_dir = os.path.join(main_dir, log_name)23    return log_dir24def get_new_log_dir():25    """26    Gets the Master Log File Directory for renaming.27    Existing Old Logs will be deleted if param: delete_old_master_log is set to True.28    No Params Required.29    """30    if delete_old_master_log is True:31        new_log_name = "Master_Log [OLD].log"32        new_log_dir = os.path.join(main_dir, new_log_name)33        if os.path.exists(new_log_dir):34            os.remove(new_log_dir)35            delete_old_logs(main_dir, "Master_Log [")36        return new_log_dir37    else:38        new_log_name = f"Master_Log [{get_last_modified_time(main_dir, 'Master_Log.log')}].log"39        new_log_dir = os.path.join(main_dir, new_log_name)40        return new_log_dir41if master_logger_enabler is True:42    if os.path.exists(get_log_dir()):43        os.rename(get_log_dir(), get_new_log_dir())44    with open(get_log_dir(), "w") as log_file:45        dt = datetime.datetime.now()46        log_file.write("TwelfthDoctor1's Master Log")47        log_file.write("\nApprentice Version: {0}".format(TD1_Lib_MasterApprentice_Control.__version__))48        log_file.write("\n==================================================================================================")49        log_file.write("\nCreation Date: {0} {1} {2} [UK] | {2} {1} {0} [US]".format(dt.day, dt.strftime("%B"), dt.year))50        log_file.write("\nCreation Time: {0}:{1}:{2} {3}".format(dt.strftime("%I"), dt.strftime("%M"), dt.strftime("%S"), dt.strftime("%p")))51        log_file.write("\n==================================================================================================")52        log_file.write("\nNEW LOG ENTRIES WILL BE APPENDED BELOW. ALL DATETIME WILL FOLLOW THE UK FORMAT.")53        log_file.write("\n==================================================================================================")54        log_file.write("\nMASTER LOG IS USED UNDER THE DIGRESSION OF TWELFTHDOCTOR1 UNDER THE USAGE OF DEBUG & TESTING.")55        log_file.write("\n==================================================================================================")56        log_file.close()57class MasterLogger:58    """59    The MasterLogger Class is a logger that logs the happenings of script when the specific functions are used.60    All logs from this class will be sent to Master_Log.log for analysis if needed.61    The MasterLogger should be used by TwelfthDoctor1 only.62    :param module_name63    :param main_owner64    :param additional_context65    """66    def __init__(self, module_name, main_owner=None, additional_context=None):67        self.module_name = module_name68        self.main_owner = main_owner69        self.addt_ctext = additional_context70    if master_logger_enabler is True:71        log_file = open(get_log_dir(), "a")72    def log(self, message, owner=None):73        """74        Logs the derived messaged onto MasterLog.75        Derived Message will be tagged as [LOG].76        :param message:77        :param owner:78        :return:79        """80        if master_logger_enabler is True:81            log_file = open(get_log_dir(), "a")82            dt_log = datetime.datetime.now()83            owner = self.main_owner or owner84            log_file.write("\n")85            log_file.write("\n[LOG: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(86                dt_log.day, dt_log.strftime("%B"),87                dt_log.year, dt_log.strftime("%I"),88                dt_log.strftime("%M"),89                dt_log.strftime("%S"),90                dt_log.strftime("%p"),91                self.module_name,92                owner93            ))94            if self.addt_ctext is not None:95                log_file.write("\n{0}".format(self.addt_ctext))96            log_file.write("\n")97            log_file.write("\n{0}".format(message))98            log_file.write("\n==================================================================================================")99    def info(self, message, owner=None):100        """101        Logs the derived message onto MasterLog.102        Derived Message will be tagged as [INFO].103        :param message:104        :param owner:105        :return:106        """107        if master_logger_enabler is True:108            log_file = open(get_log_dir(), "a")109            dt_info = datetime.datetime.now()110            owner = self.main_owner or owner111            log_file.write("\n")112            log_file.write("\n[INFO: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(113                dt_info.day, dt_info.strftime("%B"),114                dt_info.year, dt_info.strftime("%I"),115                dt_info.strftime("%M"),116                dt_info.strftime("%S"),117                dt_info.strftime("%p"),118                self.module_name,119                owner120            ))121            if self.addt_ctext is not None:122                log_file.write("\n{0}".format(self.addt_ctext))123            log_file.write("\n")124            log_file.write("\n{0}".format(message))125            log_file.write("\n==================================================================================================")126    def debug(self, message, owner=None):127        """128        Logs the derived message onto MasterLog.129        Derived Message will be tagged as [DEBUG].130        :param message:131        :param owner:132        :return:133        """134        if master_logger_enabler is True:135            log_file = open(get_log_dir(), "a")136            dt_debug = datetime.datetime.now()137            owner = self.main_owner or owner138            log_file.write("\n")139            log_file.write("\n[INFO: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(140                dt_debug.day, dt_debug.strftime("%B"),141                dt_debug.year, dt_debug.strftime("%I"),142                dt_debug.strftime("%M"),143                dt_debug.strftime("%S"),144                dt_debug.strftime("%p"),145                self.module_name,146                owner147            ))148            if self.addt_ctext is not None:149                log_file.write("\n{0}".format(self.addt_ctext))150            log_file.write("\n")151            log_file.write("\n{0}".format(message))152            log_file.write("\n==================================================================================================")153    def warn(self, message, owner=None):154        """155        Logs the derived message onto MasterLog.156        Derived Message will be tagged as [WARN].157        :param message:158        :param owner:159        :return:160        """161        if master_logger_enabler is True:162            log_file = open(get_log_dir(), "a")163            dt_warn = datetime.datetime.now()164            owner = self.main_owner or owner165            log_file.write("\n")166            log_file.write("\n[WARN: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(167                dt_warn.day, dt_warn.strftime("%B"),168                dt_warn.year, dt_warn.strftime("%I"),169                dt_warn.strftime("%M"),170                dt_warn.strftime("%S"),171                dt_warn.strftime("%p"),172                self.module_name,173                owner174            ))175            if self.addt_ctext is not None:176                log_file.write("{0}".format(self.addt_ctext))177            log_file.write("\n")178            log_file.write("\n{0}".format(message))179            log_file.write("\n==================================================================================================")180    def error(self, message, owner=None):181        """182        Logs the derived message onto MasterLog.183        Derived Message will be tagged as [ERROR].184        :param message:185        :param owner:186        :return:187        """188        if master_logger_enabler is True:189            log_file = open(get_log_dir(), "a")190            dt_error = datetime.datetime.now()191            owner = self.main_owner or owner192            log_file.write("\n")193            log_file.write("\n[ERROR: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(194                dt_error.day, dt_error.strftime("%B"),195                dt_error.year, dt_error.strftime("%I"),196                dt_error.strftime("%M"),197                dt_error.strftime("%S"),198                dt_error.strftime("%p"),199                self.module_name,200                owner201            ))202            if self.addt_ctext is not None:203                log_file.write("\n{0}".format(self.addt_ctext))204            log_file.write("\n")205            log_file.write("\n{0}".format(message))206            log_file.write("\n==================================================================================================")207    def assert_error(self, message, owner=None):208        """209        Logs the derived message onto MasterLog.210        Derived Message will be tagged as [ERROR WITH ASSERTION].211        USE WHEN NEEDED.212        :param message:213        :param owner:214        :return:215        """216        if master_logger_enabler is True:217            log_file = open(get_log_dir(), "a")218            dt_assert = datetime.datetime.now()219            owner = self.main_owner or owner220            log_file.write("\n")221            log_file.write("\n[ERROR WITH ASSERTION: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(222                dt_assert.day, dt_assert.strftime("%B"),223                dt_assert.year, dt_assert.strftime("%I"),224                dt_assert.strftime("%M"),225                dt_assert.strftime("%S"),226                dt_assert.strftime("%p"),227                self.module_name,228                owner229            ))230            if self.addt_ctext is not None:231                log_file.write("\n{0}".format(self.addt_ctext))232            log_file.write("\n")233            log_file.write("\n{0}".format(message))234            log_file.write("\n==================================================================================================")235            assert AssertionError(message)236    def exception(self, message, owner=None):237        """238        Logs the derived message onto MasterLog.239        Derived Message will be tagged as [EXCEPTION].240        :param message:241        :param owner:242        :return:243        """244        if master_logger_enabler is True:245            log_file = open(get_log_dir(), "a")246            dt_exc = datetime.datetime.now()247            owner = self.main_owner or owner248            log_file.write("\n")249            log_file.write("\n[ERROR: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(250                dt_exc.day, dt_exc.strftime("%B"),251                dt_exc.year, dt_exc.strftime("%I"),252                dt_exc.strftime("%M"),253                dt_exc.strftime("%S"),254                dt_exc.strftime("%p"),255                self.module_name,256                owner257            ))258            if self.addt_ctext is not None:259                log_file.write("\n{0}".format(self.addt_ctext))...TD1_Lib_ApprenticeLogger.py
Source:TD1_Lib_ApprenticeLogger.py  
...12"""13# User Defined Project Directory14APPRENTICE_LOGGER_MAIN_DIR = None15main_dir = APPRENTICE_LOGGER_MAIN_DIR if APPRENTICE_LOGGER_MAIN_DIR is not None else MAIN_DIR16def get_log_dir():17    """18    Gets the Apprentice Log File Directory.19    No Params Required.20    """21    log_name = "Apprentice_Log.log"22    log_dir = os.path.join(main_dir, log_name)23    return log_dir24def get_new_log_dir():25    """26    Gets the Apprentice Log File Directory for rename.27    Existing Old Logs will be deleted.28    No Params Required.29    """30    if delete_old_apprentice_log is True:31        new_log_name = "Apprentice_Log [OLD].log"32        new_log_dir = os.path.join(main_dir, new_log_name)33        if os.path.exists(new_log_dir):34            os.remove(new_log_dir)35            delete_old_logs(MAIN_DIR, "Apprentice_Log [")36        return new_log_dir37    else:38        new_log_name = f"Apprentice_Log [{get_last_modified_time(MAIN_DIR, 'Apprentice_Log.log')}].log"39        new_log_dir = os.path.join(main_dir, new_log_name)40        return new_log_dir41print(get_log_dir())42if os.path.exists(get_log_dir()):43    os.rename(get_log_dir(), get_new_log_dir())44with open(get_log_dir(), "w") as log_file:45    dt = datetime.datetime.now()46    log_file.write("TwelfthDoctor1's Apprentice Log")47    log_file.write("\nApprentice Version: {0}".format(MasterApprenticeLib.TD1_Lib_MasterApprentice_Control.__version__))48    log_file.write("\n==================================================================================================")49    log_file.write("\nCreation Date: {0} {1} {2} [UK] | {2} {1} {0} [US]".format(dt.day, dt.strftime("%B"), dt.year))50    log_file.write("\nCreation Time: {0}:{1}:{2} {3}".format(dt.strftime("%I"), dt.strftime("%M"), dt.strftime("%S"),51                                                           dt.strftime("%p")))52    log_file.write("\n==================================================================================================")53    log_file.write("\nNEW LOG ENTRIES WILL BE APPENDED BELOW. ALL DATETIME WILL FOLLOW THE UK FORMAT.")54    log_file.write("\n==================================================================================================")55    if apprentice_version_type is not MasterApprenticeLogVersionType.DEVELOPER:56        log_file.write("\nFor any issues found, please send the Apprentice Log to TwelfthDoctor1.")57    else:58        log_file.write("\nApprentice Log under Developer Control.")59    log_file.write("\n==================================================================================================")60    log_file.close()61class ApprenticeLogger:62    """63    The ApprenticeLogger Class is a logger that logs the happenings of script when the specific functions are used.64    All logs from this class will be sent to Apprentice_Log.log for analysis if needed.65    :param module_name66    :param main_owner67    :param additional_context68    """69    def __init__(self, module_name, main_owner=None, additional_context=None):70        self.module_name = module_name71        self.main_owner = main_owner72        self.addt_ctext = additional_context73    log_file = open(get_log_dir(), "a")74    def log(self, message, owner=None):75        """76        Logs the derived messaged onto ApprenticeLog.77        Derived Message will be tagged as [LOG].78        :param message:79        :param owner:80        :return:81        """82        log_file = open(get_log_dir(), "a")83        dt_log = datetime.datetime.now()84        owner = self.main_owner or owner85        log_file.write("\n")86        log_file.write("\n[LOG: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(87            dt_log.day, dt_log.strftime("%B"),88            dt_log.year, dt_log.strftime("%I"),89            dt_log.strftime("%M"),90            dt_log.strftime("%S"),91            dt_log.strftime("%p"),92            self.module_name,93            owner94        ))95        if self.addt_ctext is not None:96            log_file.write("\n{0}".format(self.addt_ctext))97        log_file.write("\n")98        log_file.write("\n{0}".format(message))99        log_file.write("\n==================================================================================================")100    def info(self, message, owner=None):101        """102        Logs the derived message onto ApprenticeLog.103        Derived Message will be tagged as [INFO].104        :param message:105        :param owner:106        :return:107        """108        log_file = open(get_log_dir(), "a")109        dt_info = datetime.datetime.now()110        owner = self.main_owner or owner111        log_file.write("\n")112        log_file.write("\n[INFO: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(113            dt_info.day, dt_info.strftime("%B"),114            dt_info.year, dt_info.strftime("%I"),115            dt_info.strftime("%M"),116            dt_info.strftime("%S"),117            dt_info.strftime("%p"),118            self.module_name,119            owner120        ))121        if self.addt_ctext is not None:122            log_file.write("\n{0}".format(self.addt_ctext))123        log_file.write("\n")124        log_file.write("\n{0}".format(message))125        log_file.write("\n==================================================================================================")126    def debug(self, message, owner=None):127        """128        Logs the derived message onto ApprenticeLog.129        Derived Message will be tagged as [DEBUG].130        :param message:131        :param owner:132        :return:133        """134        log_file = open(get_log_dir(), "a")135        dt_debug = datetime.datetime.now()136        owner = self.main_owner or owner137        log_file.write("\n")138        log_file.write("\n[INFO: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(139            dt_debug.day, dt_debug.strftime("%B"),140            dt_debug.year, dt_debug.strftime("%I"),141            dt_debug.strftime("%M"),142            dt_debug.strftime("%S"),143            dt_debug.strftime("%p"),144            self.module_name,145            owner146        ))147        if self.addt_ctext is not None:148            log_file.write("\n{0}".format(self.addt_ctext))149        log_file.write("\n")150        log_file.write("\n{0}".format(message))151        log_file.write("\n==================================================================================================")152    def warn(self, message, owner=None):153        """154        Logs the derived message onto ApprenticeLog.155        Derived Message will be tagged as [WARN].156        :param message:157        :param owner:158        :return:159        """160        log_file = open(get_log_dir(), "a")161        dt_warn = datetime.datetime.now()162        owner = self.main_owner or owner163        log_file.write("\n")164        log_file.write("\n[WARN: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(165            dt_warn.day, dt_warn.strftime("%B"),166            dt_warn.year, dt_warn.strftime("%I"),167            dt_warn.strftime("%M"),168            dt_warn.strftime("%S"),169            dt_warn.strftime("%p"),170            self.module_name,171            owner172        ))173        if self.addt_ctext is not None:174            log_file.write("\n{0}".format(self.addt_ctext))175        log_file.write("\n")176        log_file.write("\n{0}".format(message))177        log_file.write("\n==================================================================================================")178    def error(self, message, owner=None):179        """180        Logs the derived message onto ApprenticeLog.181        Derived Message will be tagged as [ERROR].182        :param message:183        :param owner:184        :return:185        """186        log_file = open(get_log_dir(), "a")187        dt_error = datetime.datetime.now()188        owner = self.main_owner or owner189        log_file.write("\n")190        log_file.write("\n[ERROR: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(191            dt_error.day, dt_error.strftime("%B"),192            dt_error.year, dt_error.strftime("%I"),193            dt_error.strftime("%M"),194            dt_error.strftime("%S"),195            dt_error.strftime("%p"),196            self.module_name,197            owner198        ))199        if self.addt_ctext is not None:200            log_file.write("\n{0}".format(self.addt_ctext))201        log_file.write("\n")202        log_file.write("\n{0}".format(message))203        log_file.write("\n==================================================================================================")204    def assert_error(self, message, owner=None):205        """206        Logs the derived message onto ApprenticeLog.207        Derived Message will be tagged as [ERROR WITH ASSERTION].208        USE WHEN NEEDED.209        :param message:210        :param owner:211        :return:212        """213        log_file = open(get_log_dir(), "a")214        dt_assert = datetime.datetime.now()215        owner = self.main_owner or owner216        log_file.write("\n")217        log_file.write("\n[ERROR WITH ASSERTION: {0} {1} {2} | {3}:{4}:{5} {6}] {7} | {8}]".format(218            dt_assert.day, dt_assert.strftime("%B"),219            dt_assert.year, dt_assert.strftime("%I"),220            dt_assert.strftime("%M"),221            dt_assert.strftime("%S"),222            dt_assert.strftime("%p"),223            self.module_name,224            owner225        ))226        if self.addt_ctext is not None:227            log_file.write("\n{0}".format(self.addt_ctext))228        log_file.write("\n")229        log_file.write("\n{0}".format(message))230        log_file.write("\n==================================================================================================")231        assert AssertionError(message)232    def exception(self, message, owner=None):233        """234        Logs the derived message onto MasterLog.235        Derived Message will be tagged as [EXCEPTION].236        :param message:237        :param owner:238        :return:239        """240        log_file = open(get_log_dir(), "a")241        dt_exc = datetime.datetime.now()242        owner = self.main_owner or owner243        log_file.write("\n")244        log_file.write("\n[ERROR: {0} {1} {2} | {3}:{4}:{5} {6}] [{7} | {8}]".format(245            dt_exc.day, dt_exc.strftime("%B"),246            dt_exc.year, dt_exc.strftime("%I"),247            dt_exc.strftime("%M"),248            dt_exc.strftime("%S"),249            dt_exc.strftime("%p"),250            self.module_name,251            owner252        ))253        if self.addt_ctext is not None:254            log_file.write("\n{0}".format(self.addt_ctext))...test_var_prob.py
Source:test_var_prob.py  
...31    #also using kmc32    scores_kmc = get_var_probs.get_bear_probs(None, wt_seq, vars_, 0, data=data,33                                              mc_samples=500000, vans=vans, lag=3, alphabet='dna', kmc_path=kmc_path)34    #calc true probs35    def get_log_dir(seen, all_, van, num_samples=500000):36        return np.average(np.log(st.beta.rvs(seen+van, all_-seen+alphabet_size*van, size=num_samples)))37    true_scores = np.empty([len(vars_), len(vans)])38    for i, van in enumerate(vans):39        true_scores[0, i] = ((2*get_log_dir(4, 7, van) + 1*get_log_dir(2, 7, van))40                             -(1*get_log_dir(1, 7, van) + 2*get_log_dir(1, 1, van)))41    for i, van in enumerate(vans):42        true_scores[1, i] = ((get_log_dir(1, 4, van) + get_log_dir(0, 1, van) + 2*get_log_dir(0, 0, van))43                             -(get_log_dir(3, 4, van) + get_log_dir(1, 7, van) + 2*get_log_dir(1, 1, van)))44        45    #assert46    fraction_error = (np.average(scores, axis=-1)-true_scores)/true_scores47    print(np.absolute(fraction_error))48    assert np.all(np.absolute(fraction_error) < 0.01)49    50    fraction_error = (np.average(scores_kmc, axis=-1)-true_scores)/true_scores51    print(np.absolute(fraction_error))52    assert np.all(np.absolute(fraction_error) < 0.01)53    54    # Now by MAP55    scores = get_var_probs.get_bear_probs(None, wt_seq, vars_, 0, data=data, get_map=True,56                                          vans=vans, lag=3, alphabet='dna')57    scores_kmc = get_var_probs.get_bear_probs(None, wt_seq, vars_, 0, data=data, get_map=True,58                                              vans=vans, lag=3, alphabet='dna', kmc_path=kmc_path)59    60    def get_quotient(seen, all_, van):61        return np.log((seen+van) / (all_+(alphabet_size+1)*van))62    63    for i, van in enumerate(vans):64        true_scores[0, i] = ((2*get_quotient(4, 7, van) + 1*get_quotient(2, 7, van))65                             -(1*get_quotient(1, 7, van) + 2*get_quotient(1, 1, van)))66    for i, van in enumerate(vans):67        true_scores[1, i] = ((get_quotient(1, 4, van) + get_quotient(0, 1, van) + 2*get_quotient(0, 0, van))68                             -(get_quotient(3, 4, van) + get_quotient(1, 7, van) + 2*get_quotient(1, 1, van)))69        70    print((np.average(scores, axis=-1)-np.average(scores_kmc, axis=-1))/np.average(scores, axis=-1))71    assert np.allclose(scores, true_scores)72def test_mc_sampling_seqs():73    f_name = resource_filename('bear_model', 'data/ex_seqs_kmap_for_var_pred.csv')74    kmc_path = f_name.split('ex_seqs_kmap_for_var_pred.csv')[0] + 'kmaps/ex_seqs'75    data = dataloader.sparse_dataloader(f_name, 'dna', 500, 1)76    alphabet_size = 477    78    # Sequences are 'TTTAT', 'TTCTT', 'TTTTT', 'TTTTT'79    seqs = ['TTTAT', 'TTCAT']80    vans = np.array([0.1, 1, 10])81    82    # First by mc sampling83    scores = get_var_probs.get_bear_probs_seqs(None, seqs, 0, data=data,84                                          mc_samples=200000, vans=vans, lag=3, alphabet='dna')85    #also using kmc86    scores_kmc = get_var_probs.get_bear_probs_seqs(None, seqs, 0, data=data,87                                              mc_samples=200000, vans=vans, lag=3, alphabet='dna', kmc_path=kmc_path)88    #calc true probs89    def get_log_dir(seen, all_, van, num_samples=200000):90        return np.average(np.log(st.beta.rvs(seen+van, all_-seen+alphabet_size*van, size=num_samples)))91    true_scores = np.empty([len(seqs), len(vans)])92    for i, van in enumerate(vans):93        true_scores[0, i] = (2*get_log_dir(4, 4, van) + 1*get_log_dir(3, 4, van)94                             + 1*get_log_dir(1, 7, van) +  2*get_log_dir(1, 1, van))95    for i, van in enumerate(vans):96        true_scores[1, i] = (2*get_log_dir(4, 4, van) + 1*get_log_dir(1, 4, van)97                             + 1*get_log_dir(0, 1, van) +  2*get_log_dir(0, 0, van))98        99    #assert100    fraction_error = (np.average(scores, axis=-1)-true_scores)/true_scores101    assert np.all(np.absolute(fraction_error) < 0.01)102    103    fraction_error = (np.average(scores_kmc, axis=-1)-true_scores)/true_scores104    assert np.all(np.absolute(fraction_error) < 0.01)105    106    # Now by MAP107    scores = get_var_probs.get_bear_probs_seqs(None, seqs, 0, data=data, get_map=True,108                                          vans=vans, lag=3, alphabet='dna')109    scores_kmc = get_var_probs.get_bear_probs_seqs(None, seqs, 0, data=data, get_map=True,110                                              mc_samples=200000, vans=vans, lag=3, alphabet='dna', kmc_path=kmc_path)111    ...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
