How to use sortkeys method in Kiwi

Best Python code snippet using Kiwi_python

Test_Sorting.py

Source:Test_Sorting.py Github

copy

Full Screen

1"""Module Documentation here2"""3#=========================================================================================4# Licence, Reference and Credits5#=========================================================================================6__copyright__ = "Copyright (C) CCPN project (http://www.ccpn.ac.uk) 2014 - 2019"7__credits__ = ("Ed Brooksbank, Luca Mureddu, Timothy J Ragan & Geerten W Vuister")8__licence__ = ("CCPN licence. See http://www.ccpn.ac.uk/v3-software/downloads/license")9__reference__ = ("Skinner, S.P., Fogh, R.H., Boucher, W., Ragan, T.J., Mureddu, L.G., & Vuister, G.W.",10 "CcpNmr AnalysisAssign: a flexible platform for integrated NMR analysis",11 "J.Biomol.Nmr (2016), 66, 111-124, http://doi.org/10.1007/s10858-016-0060-y")12#=========================================================================================13# Last code modification14#=========================================================================================15__modifiedBy__ = "$modifiedBy: CCPN $"16__dateModified__ = "$dateModified: 2017-07-07 16:32:35 +0100 (Fri, July 07, 2017) $"17__version__ = "$Revision: 3.0.0 $"18#=========================================================================================19# Created20#=========================================================================================21__author__ = "$Author: CCPN $"22__date__ = "$Date: 2017-04-07 10:28:41 +0000 (Fri, April 07, 2017) $"23#=========================================================================================24# Start of code25#=========================================================================================26import math27from collections import OrderedDict28import numpy29import pandas30from ccpn import core31from ccpn.core.lib import CcpnSorting32from ccpn.core.testing.WrapperTesting import WrapperTesting33from ccpn.util import Sorting34class SortingData(WrapperTesting):35 # Path of project to load (None for new project36 projectPath = None37 # Data for sorting tests.38 # All data are in correct sorting order as given here39 specials = [None, False, True, ]40 reals = [float('NaN'), float('-Infinity'), -12, -2, -1, -0.1, 0, 1.1e-1,41 1, 2, 12, float('Infinity'), ]42 negstrings = ['', 'NaN', '-Infinity', '-12', '-2', '-1', '-0.1', ]43 zerostrings = ['+0', '+0.', '+0.0', '-.0', '-0', '-0.0', '.0', '0', '0.0', '0.0 ', ]44 posstrings = ['1.1e-12', ' 1', '+1', '1', '1.', '1.0', '2', '12', 'Infinity', ]45 strings2 = [' ', ' z', ' z.', '#', '+ 0.0', '.0-', '@', 'A', 'B',46 'Z', 'Z.', 'a', 'blah', 'blah2', 'blahblah', 'z', ]47 chainCodes = ['1', '2', '15', '#1', '@-2', '@1',48 '@1', '@2', '@12', '@-', '@A', '@a', 'A', 'A2', 'Z', 'a', 'z', ]49 sequenceCodes = ['-1', ' 1', '+1', '1', '1b', '1.', '2b', '2b-11', '2b-2.', '2b-1', '2b+0', '2b-0',50 '2b0', '2b+1', '2b+2', '2b2', '2b.', '2b@11', '2ba', '15.', '#1', '#2', '#11', '#11-1',51 '#11+1', '#105', '@-11', '@-2', '@-1', '@0', '@1', '@2', '@11', '@-', '@@a',52 '@A']53 sequenceCodes2 = ['-1', '+1', '1', '1b', '2b', '2b-11', '2b-2.', '2b-1', '2b+0', '2b-0',54 '2b0', '2b+1', '2b+2', '2b2', '2b@11', '2ba', '#1', '#2', '#11', '#11-1',55 '#11+1', '#105', '@-11', '@-2', '@-1', '@0', '@1', '@2', '@11', '@-', '@@a',56 '@A']57 atomNames = ['C', 'C@2', 'CA', 'CB', 'CD', 'CD1', 'CD2', 'CD%', 'CD*', 'CDx', 'CDy',58 'H', 'H1', 'H2', 'H3', 'H#', 'H%', 'H*', 'H@1', 'H@2', 'H@15', 'HG', 'HG1', 'HG1%',59 'HG2', 'HG3', 'HG%', 'HG*', 'HGx', 'HGy', ]60 tuples = [(1, 'a'), ('1', 'b')]61 lists = [[1, 'a'], ['1', 'b']]62 dicts = [63 {float('NaN'): None, 1: 1, 'a': 'b', False: True, (): (), (): [], },64 {float('NaN'): None, 1: 1, 'a': 'b', False: True, (): (), (): [], frozenset(): {}},65 {float('NaN'): None, 1: 1, 'a': 'b', False: True, (): (), (): (), frozenset(): {}},66 {False: True, 1: 1, 'a': 'b', 2: None, (): (), (): [], frozenset(): {}},67 {'a': 'a', 1: 3},68 OrderedDict((('a', ''), (1, 0))),69 ]70 bytes = [b' 124', b'absd', ]71 mixed = [pandas.DataFrame(), pandas.Series(), complex(1, 2), complex(11, 0), complex(1),72 frozenset(()), lambda: 1, Sorting.stringSortKey, Sorting.universalSortKey,73 core, Sorting, math, numpy,74 numpy.array([1., 2.]), numpy.array([[1, 2], [3, 4]]), numpy.array(['a', 'b', 'c', 'd'], ),75 set(), set((1,)), set((1, 9, 11)), set((2, 1)),76 ]77 pids = ['NR:@-.@1', 'NR:@-.@1-1.', 'NR:@-.@1+0.', 'NR:@-.@1+1.', 'NR:@-.@1.', ]78 data1 = (79 ['1st place', '2nd place', '10th place'],80 ['127.0.0.55', '127.0.0.100'],81 ['0.01', '0.1', '1'],82 ['0.501', '0.55'],83 ['CASE', 'SENSITIVE', 'case', 'sensitive'],84 ['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg'],85 ['Elm2', 'Elm11', 'Elm12', 'elm0', 'elm1', 'elm9', 'elm10', 'elm13'],86 ['@1.127b..H@2', '@1.127b..H@15', ],87 ['', 'NaN', '-1', '-1A', '0.0', '1', '2', '15', '3.2e12', 'Inf', 'Ahh', 'b', 'b2', 'bb', 'ciao']88 )89 data2 = (90 [0.01, 0.1, 1],91 [0.501, 0.55],92 [[1, 'a'], ['1', 'b'], (1, 'a'), ('1', 'b'), b' 124', b'absd', ],93 [0, 1.0, 1.0, lambda: 1, ],94 [95 {1: 1, 'a': 'b', None: None, False: True, (): (), (): {}, frozenset(): {}},96 {1: 1, 'a': 'b', None: None, False: True, (): (), (): [], frozenset(): {}},97 {1: 1, 'a': 'b', None: None, False: True, (): (), (): (), frozenset(): {}},98 {1: 1, 'a': 'b', 2: None, False: True, (): (), (): [], frozenset(): {}},99 {'a': 'a', 1: 3},100 OrderedDict((('a', ''), (1, 0))),101 ]102 )103 data3 = [0.0, 1, (1 + 0j), False, (2 + 3j)]104 data4 = [None, False, True, float('NaN'), float('-inf'), 0.1, 1.0, float('inf'), '',105 'NaN', '-1', '-1.', '0.0.', '0.01.', '0.1e-7.', '0.0', '0.1e-7', '0.01', '1', '1.0.', '1.', '1.0',106 'Infinity', '-Infinity.', 'NaN.',107 ]108 data5 = ['', 'NaN', '-1', '-1A', '0.0', '1', '2', '15', '3.2e12', 'Inf',109 'Ahh', 'b', 'b2', 'b12', 'bb', 'ciao']110 data6 = ['2,500 items', '2,500.1 items', '2.5 items', '3.5 items', '15 items']111 data7 = ['@1.127b-1..H@2', '@1.127b+0..H@2', '@1.127b-0..H@2', '@1.127b+1..H@2',112 '@1.127b1..H@2', '@1.127b..H@15', ]113class StdSortingTest(SortingData):114 sortKeys = {115 'universal': Sorting.universalNaturalSortKey,116 'string' : Sorting.stringSortKey117 }118 def test_string_sorting_1(self):119 for ll in self.data1:120 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])121 self.assertEqual(ll2, ll)122 def test_string_sorting_5(self):123 ll = self.data5124 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])125 self.assertEqual(ll2, ll)126 def test_string_sorting_6(self):127 ll = self.data6128 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])129 self.assertEqual(ll2, ll)130 def test_string_sorting_7(self):131 ll = self.data7132 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])133 self.assertEqual(ll2, ll)134 def test_mixed_sorting_1(self):135 for ll in self.data1:136 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])137 self.assertEqual(ll2, ll)138 def test_mixed_sorting_2(self):139 for ll in self.data2:140 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])141 self.assertEqual(ll2, ll)142 def test_mixed_sorting_3(self):143 self.assertEqual(sorted(self.data3, key=self.sortKeys['universal'])[:3], [False, 0.0, 1])144 def test_mixed_sorting_4(self):145 ll = self.data4146 ll2 = sorted(list(reversed(self.data4)), key=self.sortKeys['universal'])147 self.assertEqual(ll2[:3], ll[:3])148 self.assertEqual(ll2[4:], ll[4:])149 self.assertTrue(math.isnan(ll2[3]))150 def test_sort_pids(self):151 ll = self.pids152 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])153 self.assertEqual(ll2, ll)154 def test_sort_specials(self):155 ll = self.specials156 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])157 self.assertEqual(ll2, ll)158 def test_sort_reals(self):159 ll = self.reals160 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])161 self.assertEqual(ll2, ll)162 def test_sort_negstrings(self):163 ll = self.negstrings164 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])165 self.assertEqual(ll2, ll)166 def test_sort_zerostrings(self):167 ll = self.zerostrings168 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])169 self.assertEqual(ll2, ll)170 def test_sort_posstrings(self):171 ll = self.posstrings172 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])173 self.assertEqual(ll2, ll)174 def test_sort_strings2(self):175 ll = self.strings2176 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])177 self.assertEqual(ll2, ll)178 def test_sort_chainCodes(self):179 ll = self.chainCodes180 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])181 self.assertEqual(ll2, ll)182 def test_sort_sequenceCodes(self):183 ll = self.sequenceCodes184 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])185 self.assertEqual(ll2, ll)186 def test_sort_sequenceCodes2(self):187 ll = self.sequenceCodes2188 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])189 self.assertEqual(ll2, ll)190 def test_sort_atomNames(self):191 ll = self.atomNames192 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])193 self.assertEqual(ll2, ll)194 def test_sort_tuples(self):195 ll = self.tuples196 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])197 self.assertEqual(ll2, ll)198 def test_sort_lists(self):199 ll = self.lists200 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])201 self.assertEqual(ll2, ll)202 def test_sort_dicts(self):203 ll = self.dicts204 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])205 self.assertEqual(ll2, ll)206 def test_sort_mixed(self):207 ll = [float('NaN')] + self.mixed208 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])209 # NB the skipped parts sort by id and so cannot be tested properly210 self.assertTrue(math.isnan(ll2[0]))211 self.assertEqual(ll2[7:-7], ll[7:-7])212 testClassNames = ['DataFrame', 'Series', 'complex', 'complex', 'complex', 'frozenset']213 self.assertTrue(tt[0].__class__.__name__ == tt[1] for tt in zip(ll2[1:7], testClassNames))214 self.assertTrue(all(x.__class__.__name__ == 'set' for x in ll2[-4:]))215 self.assertTrue(all(x.__class__.__name__ == 'ndarray' for x in ll2[-7:-4]))216 def test_sort_all_1(self):217 ll = (self.specials + self.reals + self.negstrings + self.zerostrings + self.posstrings218 + self.strings2 + self.dicts + self.lists + self.tuples + self.bytes)219 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])220 self.assertTrue(math.isnan(ll2[3]))221 self.assertEqual(ll2[:3], ll[:3])222 self.assertEqual(ll2[4:], ll[4:])223 def test_sort_all_2(self):224 ll = (self.specials + self.reals + self.negstrings + self.zerostrings + self.posstrings225 + self.strings2 + self.dicts + self.lists + self.tuples + self.bytes + self.mixed)226 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])227 self.assertEqual(ll2[:3], ll[:3])228 self.assertEqual(ll2[4:-len(self.mixed)], ll[4:-len(self.mixed)])229 self.assertTrue(math.isnan(ll2[3]))230class CcpnSortingTest(SortingData):231 sortKeys = {232 'universal': CcpnSorting.universalSortKey,233 'string' : CcpnSorting.stringSortKey234 }235 # Different sorting order for these examples236 data6 = ['2.5 items', '2,500.1 items', '2,500 items', '3.5 items', '15 items']237 data7 = ['@1.127b-1..H@2', '@1.127b..H@15', '@1.127b+0..H@2', '@1.127b-0..H@2', '@1.127b+1..H@2',238 '@1.127b1..H@2', ]239 pids = ['NR:@-.@1-1.', 'NR:@-.@1', 'NR:@-.@1.', 'NR:@-.@1+0.', 'NR:@-.@1+1.', ]240 sequenceCodes = ['-1', ' 1', '+1', '1', '1b', '1.', '2b-11', '2b-2.', '2b-1', '2b', '2b.',241 '2b+0', '2b-0', '2b0',242 '2b+1', '2b+2', '2b2', '2b@11', '2ba', '15.', '#1', '#2', '#11-1', '#11',243 '#11+1', '#105', '@-11', '@-2', '@-1', '@0', '@1', '@2', '@11', '@-', '@@a',244 '@A']245 sequenceCodes2 = ['-1', '+1', '1', '1b', '2b-11', '2b-2.', '2b-1', '2b', '2b+0', '2b-0',246 '2b0', '2b+1', '2b+2', '2b2', '2b@11', '2ba', '#1', '#2', '#11-1', '#11',247 '#11+1', '#105', '@-11', '@-2', '@-1', '@0', '@1', '@2', '@11', '@-', '@@a',248 '@A']249 def test_string_sorting_1(self):250 for ll in self.data1:251 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])252 self.assertEqual(ll2, ll)253 def test_string_sorting_5(self):254 ll = self.data5255 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])256 self.assertEqual(ll2, ll)257 def test_string_sorting_6(self):258 ll = self.data6259 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])260 self.assertEqual(ll2, ll)261 def test_string_sorting_7(self):262 ll = self.data7263 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['string'])264 self.assertEqual(ll2, ll)265 def test_mixed_sorting_1(self):266 for ll in self.data1:267 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])268 self.assertEqual(ll2, ll)269 def test_mixed_sorting_2(self):270 for ll in self.data2:271 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])272 self.assertEqual(ll2, ll)273 def test_mixed_sorting_3(self):274 self.assertEqual(sorted(self.data3, key=self.sortKeys['universal'])[:3], [False, 0.0, 1])275 def test_mixed_sorting_4(self):276 ll = self.data4277 ll2 = sorted(list(reversed(self.data4)), key=self.sortKeys['universal'])278 self.assertEqual(ll2[:3], ll[:3])279 self.assertEqual(ll2[4:], ll[4:])280 self.assertTrue(math.isnan(ll2[3]))281 def test_sort_pids(self):282 ll = self.pids283 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])284 self.assertEqual(ll2, ll)285 def test_sort_specials(self):286 ll = self.specials287 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])288 self.assertEqual(ll2, ll)289 def test_sort_reals(self):290 ll = self.reals291 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])292 self.assertEqual(ll2, ll)293 def test_sort_negstrings(self):294 ll = self.negstrings295 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])296 self.assertEqual(ll2, ll)297 def test_sort_zerostrings(self):298 ll = self.zerostrings299 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])300 self.assertEqual(ll2, ll)301 def test_sort_posstrings(self):302 ll = self.posstrings303 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])304 self.assertEqual(ll2, ll)305 def test_sort_strings2(self):306 ll = self.strings2307 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])308 self.assertEqual(ll2, ll)309 def test_sort_chainCodes(self):310 ll = self.chainCodes311 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])312 self.assertEqual(ll2, ll)313 def test_sort_sequenceCodes(self):314 ll = self.sequenceCodes315 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])316 self.assertEqual(ll2, ll)317 def test_sort_sequenceCodes2(self):318 ll = self.sequenceCodes2319 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])320 self.assertEqual(ll2, ll)321 def test_sort_atomNames(self):322 ll = self.atomNames323 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])324 self.assertEqual(ll2, ll)325 def test_sort_tuples(self):326 ll = self.tuples327 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])328 self.assertEqual(ll2, ll)329 def test_sort_lists(self):330 ll = self.lists331 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])332 self.assertEqual(ll2, ll)333 def test_sort_dicts(self):334 ll = self.dicts335 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])336 self.assertEqual(ll2, ll)337 def test_sort_mixed(self):338 ll = [float('NaN')] + self.mixed339 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])340 # NB the skipped parts sort by id and so cannot be tested properly341 self.assertTrue(math.isnan(ll2[0]))342 self.assertEqual(ll2[7:-7], ll[7:-7])343 testClassNames = ['DataFrame', 'Series', 'complex', 'complex', 'complex', 'frozenset']344 self.assertTrue(tt[0].__class__.__name__ == tt[1] for tt in zip(ll2[1:7], testClassNames))345 self.assertTrue(all(x.__class__.__name__ == 'set' for x in ll2[-4:]))346 self.assertTrue(all(x.__class__.__name__ == 'ndarray' for x in ll2[-7:-4]))347 def test_sort_all_1(self):348 ll = (self.specials + self.reals + self.negstrings + self.zerostrings + self.posstrings349 + self.strings2 + self.dicts + self.lists + self.tuples + self.bytes)350 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])351 self.assertTrue(math.isnan(ll2[3]))352 self.assertEqual(ll2[:3], ll[:3])353 self.assertEqual(ll2[4:], ll[4:])354 def test_sort_all_2(self):355 ll = (self.specials + self.reals + self.negstrings + self.zerostrings + self.posstrings356 + self.strings2 + self.dicts + self.lists + self.tuples + self.bytes + self.mixed)357 ll2 = sorted(list(reversed(ll)), key=self.sortKeys['universal'])358 self.assertEqual(ll2[:3], ll[:3])359 self.assertEqual(ll2[4:-len(self.mixed)], ll[4:-len(self.mixed)])...

Full Screen

Full Screen

xbmcUtils.py

Source:xbmcUtils.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2import xbmcgui, xbmc, xbmcplugin3enable_debug = False4#######################################5# Xbmc Helpers6#######################################7def select(title, menuItems):8 select = xbmcgui.Dialog().select(title, menuItems)9 if select == -1:10 return None11 else:12 return menuItems[select]13def getKeyboard(default = '', heading = '', hidden = False):14 kboard = xbmc.Keyboard(default, heading, hidden)15 kboard.doModal()16 if kboard.isConfirmed():17 return kboard.getText()18 return ''19def getImage(title):20 dialog = xbmcgui.Dialog()21 image = dialog.browse(1, title, 'pictures', '.jpg|.png', True)22 return image23def showMessage(msg):24 xbmc.executebuiltin('Notification(SportsDevil,' + str(msg.encode('utf-8', 'ignore')) + ')')25 26 27def showBusyAnimation():28 xbmc.executebuiltin( 'ActivateWindow(busydialog)' )29 30def hideBusyAnimation():31 xbmc.executebuiltin( 'Dialog.Close(busydialog,true)' )32 33def closeAllDialogs():34 xbmc.executebuiltin('Dialog.Close(all, true)') 35 36 37def log(msg):38 if enable_debug:39 try:40 xbmc.log(msg)41 except:42 xbmc.log(msg.encode('utf-8')) 43def setSortMethodsForCurrentXBMCList(handle, sortKeys):44 45 def addSortMethod(method):46 xbmcplugin.addSortMethod(handle = handle, sortMethod = method)47 48 if not sortKeys or sortKeys==[]: 49 addSortMethod(xbmcplugin.SORT_METHOD_UNSORTED)50 else: 51 if 'name' in sortKeys:52 addSortMethod(xbmcplugin.SORT_METHOD_LABEL)53 if 'size' in sortKeys:54 addSortMethod(xbmcplugin.SORT_METHOD_SIZE)55 if 'duration' in sortKeys:56 addSortMethod(xbmcplugin.SORT_METHOD_DURATION)57 if 'genre' in sortKeys:58 addSortMethod(xbmcplugin.SORT_METHOD_GENRE)59 if 'rating' in sortKeys:60 addSortMethod(xbmcplugin.SORT_METHOD_VIDEO_RATING)61 if 'date' in sortKeys:62 addSortMethod(xbmcplugin.SORT_METHOD_DATE)63 if 'file' in sortKeys:64 addSortMethod(xbmcplugin.SORT_METHOD_FILE)65 66 67 68def getContainerFolderPath(): 69 return xbmc.getInfoLabel('Container.FolderPath')70def getListItemPath():71 return xbmc.getInfoLabel('ListItem.Path')72def getCurrentWindow():73 return xbmc.getInfoLabel('System.CurrentWindow')74def getCurrentControl():75 return xbmc.getInfoLabel('System.CurrentControl')76def getCurrentWindowXmlFile():...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Kiwi automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful