How to use test_complex method in pytest-bdd

Best Python code snippet using pytest-bdd_python

test_systematic.py

Source:test_systematic.py Github

copy

Full Screen

1from __future__ import absolute_import2import autograd.numpy.random as npr3import autograd.numpy as np4import operator as op5from numpy_utils import (combo_check, stat_check, unary_ufunc_check,6 binary_ufunc_check, binary_ufunc_check_no_same_args)7npr.seed(0)8# Array statistics functions9def test_max(): stat_check(np.max)10def test_all(): stat_check(np.all)11def test_any(): stat_check(np.any)12def test_max(): stat_check(np.max)13def test_mean(): stat_check(np.mean)14def test_min(): stat_check(np.min)15def test_sum(): stat_check(np.sum)16def test_prod(): stat_check(np.prod)17def test_var(): stat_check(np.var)18def test_std(): stat_check(np.std)19# Unary ufunc tests20def test_sin(): unary_ufunc_check(np.sin)21def test_abs(): unary_ufunc_check(np.abs, lims=[0.1, 4.0])22def test_absolute(): unary_ufunc_check(np.absolute, lims=[0.1, 4.0])23def test_abs_builtin(): unary_ufunc_check(abs, lims=[0.1, 4.0])24def test_arccosh(): unary_ufunc_check(np.arccosh, lims=[1.1, 4.0])25def test_arcsinh(): unary_ufunc_check(np.arcsinh, lims=[-0.9, 0.9])26def test_arctanh(): unary_ufunc_check(np.arctanh, lims=[-0.9, 0.9])27def test_ceil(): unary_ufunc_check(np.ceil, lims=[-1.5, 1.5], test_complex=False)28def test_cos(): unary_ufunc_check(np.cos)29def test_cosh(): unary_ufunc_check(np.cosh)30def test_deg2rad(): unary_ufunc_check(np.deg2rad, test_complex=False)31def test_degrees(): unary_ufunc_check(lambda x : np.degrees(x)/50.0, test_complex=False)32def test_exp(): unary_ufunc_check(np.exp)33def test_exp2(): unary_ufunc_check(np.exp2)34def test_expm1(): unary_ufunc_check(np.expm1)35def test_fabs(): unary_ufunc_check(np.fabs, test_complex=False)36def test_floor(): unary_ufunc_check(np.floor, lims=[-1.5, 1.5], test_complex=False)37def test_log(): unary_ufunc_check(np.log, lims=[0.2, 2.0])38def test_log10(): unary_ufunc_check(np.log10, lims=[0.2, 2.0])39def test_log1p(): unary_ufunc_check(np.log1p, lims=[0.2, 2.0])40def test_log2(): unary_ufunc_check(np.log2, lims=[0.2, 2.0])41def test_rad2deg(): unary_ufunc_check(lambda x : np.rad2deg(x)/50.0, test_complex=False)42def test_radians(): unary_ufunc_check(np.radians, test_complex=False)43def test_sign(): unary_ufunc_check(np.sign)44def test_sin(): unary_ufunc_check(np.sin)45def test_sinh(): unary_ufunc_check(np.sinh)46def test_sqrt(): unary_ufunc_check(np.sqrt, lims=[1.0, 3.0])47def test_square(): unary_ufunc_check(np.square, test_complex=False)48def test_tan(): unary_ufunc_check(np.tan, lims=[-1.1, 1.1])49def test_tanh(): unary_ufunc_check(np.tanh)50def test_real(): unary_ufunc_check(np.real)51def test_real_ic(): unary_ufunc_check(np.real_if_close)52def test_imag(): unary_ufunc_check(np.imag)53def test_conj(): unary_ufunc_check(np.conj)54def test_angle(): unary_ufunc_check(np.angle)55def test_ldexp(): unary_ufunc_check(lambda x: np.ldexp(x, 3), test_complex=False)56def test_ldexp_neg(): unary_ufunc_check(lambda x: np.ldexp(x, -2), test_complex=False)57# Re-add these tests once we switch to new refactoring that gets rid of NoDerivativeNode58# def test_frexp(): unary_ufunc_check(lambda x: np.frexp(x)[0], lims=[2.1, 2.9], test_complex=False)59# def test_frexp_neg(): unary_ufunc_check(lambda x: np.frexp(x)[0], lims=[-2.1, -2.9], test_complex=False)60# Binary ufunc tests61def test_add(): binary_ufunc_check(np.add)62def test_logaddexp(): binary_ufunc_check(np.logaddexp, test_complex=False)63def test_logaddexp2(): binary_ufunc_check(np.logaddexp2, test_complex=False)64def test_true_divide(): binary_ufunc_check(np.true_divide, lims_B=[0.3, 2.0], test_complex=False)65def test_true_divide_neg(): binary_ufunc_check(np.true_divide, lims_B=[-0.9, -2.0], test_complex=False)66def test_hypot(): binary_ufunc_check(np.hypot, test_complex=False)67def test_arctan2(): binary_ufunc_check(np.arctan2, test_complex=False)68def test_copysign(): binary_ufunc_check(np.copysign, test_complex=False)69def test_nextafter(): binary_ufunc_check(np.nextafter, test_complex=False)70def test_remainder(): binary_ufunc_check_no_same_args(np.remainder, lims_A=[-0.9, 0.9], lims_B=[0.7, 1.9], test_complex=False)71def test_fmod(): binary_ufunc_check_no_same_args(np.fmod, lims_A=[-0.9, 0.9], lims_B=[0.7, 1.9], test_complex=False)72def test_mod(): binary_ufunc_check_no_same_args(np.mod, lims_B=[ 0.8, 2.1], test_complex=False)73def test_mod_neg(): binary_ufunc_check_no_same_args(np.mod, lims_B=[-0.9, -2.0], test_complex=False)74def test_op_mul(): binary_ufunc_check(op.mul)75def test_op_add(): binary_ufunc_check(op.add)76def test_op_sub(): binary_ufunc_check(op.sub)77def test_op_div(): binary_ufunc_check(op.truediv, lims_B=[0.5, 2.0])78def test_op_pow(): binary_ufunc_check(op.pow, lims_A=[0.7, 2.0])79def test_op_mod(): binary_ufunc_check_no_same_args(op.mod, lims_B=[0.3, 2.0], test_complex=False)80def test_op_mod_neg(): binary_ufunc_check_no_same_args(op.mod, lims_B=[-0.3, -2.0], test_complex=False)81# Misc tests82R = npr.randn83def test_transpose(): combo_check(np.transpose, [0],84 [R(2, 3, 4)], axes = [None, [0, 1, 2], [0, 2, 1],85 [2, 0, 1], [2, 1, 0],86 [1, 0, 2], [1, 2, 0]])87def test_repeat(): combo_check(np.repeat, [0], [R(2, 3, 4), R(3, 1)],88 repeats=[0,1,2], axis = [None, 0, 1])89def test_diff():90 combo_check(np.diff, [0], [R(5,5), R(5,5,5)], n=[1,2], axis=[0,1])91 combo_check(np.diff, [0], [R(1), R(1,1)], axis=[0])92 combo_check(np.diff, [0], [R(1,1), R(3,1)], axis=[1])93def test_tile():94 combo_check(np.tile, [0], [R(2,1,3,1)], reps=[(1, 4, 1, 2)])95 combo_check(np.tile, [0], [R(1,2)], reps=[(1,2), (2,3), (3,2,1)])96 combo_check(np.tile, [0], [R(1)], reps=[(2,), 2])97def test_inner(): combo_check(np.inner, [0, 1],98 [1.5, R(3), R(2, 3)],99 [0.3, R(3), R(4, 3)])100def test_dot(): combo_check(np.dot, [0, 1],101 [1.5, R(3), R(2, 3), R(2, 2, 3)],102 [0.3, R(3), R(3, 4), R(2, 3, 4)])103def test_matmul(): combo_check(np.matmul, [0, 1],104 [R(3), R(2, 3), R(2, 2, 3)],105 [R(3), R(3, 4), R(2, 3, 4)])106def test_tensordot_1(): combo_check(np.tensordot, [0, 1],107 [R(1, 3), R(2, 3, 2)],108 [R(3), R(3, 1), R(3, 4, 2)],109 axes=[ [(1,), (0,)] ])110def test_tensordot_2(): combo_check(np.tensordot, [0, 1],111 [R(3), R(3, 1), R(3, 4, 2)],112 [R(1, 3), R(2, 3, 2)],113 axes=[ [(0,), (1,)] ])114def test_tensordot_3(): combo_check(np.tensordot, [0, 1],115 [R(2, 3), R(2, 3, 4)],116 [R(1, 2, 3), R(2, 2, 3, 4)],117 axes=[ [(0, 1), (1, 2)] , [(1, 0), (2, 1)] ])118def test_tensordot_4(): combo_check(np.tensordot, [0, 1],119 [R(2, 2), R(4, 2, 2)],120 [R(2, 2), R(2, 2, 4)],121 axes=[1, 2])122def test_tensordot_5(): combo_check(np.tensordot, [0, 1], [R(4)], [R()], axes=[0])123def test_tensordot_6(): combo_check(np.tensordot, [0, 1], [R(2,6)], [R(6,3)], axes=[[[-1], [0]]])124# Need custom tests because gradient is undefined when arguments are identical.125def test_maximum(): combo_check(np.maximum, [0, 1],126 [R(1), R(1,4), R(3, 4)],127 [R(1), R(1,4), R(3, 4)])128def test_fmax(): combo_check(np.fmax, [0, 1],129 [R(1), R(1,4), R(3, 4)],130 [R(1), R(1,4), R(3, 4)])131def test_minimum(): combo_check(np.minimum, [0, 1],132 [R(1), R(1,4), R(3, 4)],133 [R(1), R(1,4), R(3, 4)])134def test_fmin(): combo_check(np.fmin, [0, 1],135 [R(1), R(1,4), R(3, 4)],136 [R(1), R(1,4), R(3, 4)])137def test_sort(): combo_check(np.sort, [0], [R(1), R(7)])138def test_msort(): combo_check(np.msort, [0], [R(1), R(7)])139def test_partition(): combo_check(np.partition, [0],140 [R(7), R(14)], kth=[0, 3, 6])141def test_atleast_1d(): combo_check(np.atleast_1d, [0], [1.2, R(1), R(7), R(1,4), R(2,4), R(2, 4, 5)])142def test_atleast_2d(): combo_check(np.atleast_2d, [0], [1.2, R(1), R(7), R(1,4), R(2,4), R(2, 4, 5)])143def test_atleast_3d(): combo_check(np.atleast_3d, [0], [1.2, R(1), R(7), R(1,4), R(2,4), R(2, 4, 5),144 R(2, 4, 3, 5)])145def test_einsum_transpose(): combo_check(np.einsum, [1], ['ij->ji'], [R(1, 1), R(4,4), R(3,4)])146def test_einsum_matmult(): combo_check(np.einsum, [1, 2], ['ij,jk->ik'], [R(2, 3)], [R(3,4)])147def test_einsum_matmult_broadcast(): combo_check(np.einsum, [1, 2], ['...ij,...jk->...ik'],148 [R(2, 3), R(2, 2, 3)],149 [R(3, 4), R(2, 3, 4)])150def test_einsum_covsum(): combo_check(np.einsum, [1, 2], ['ijk,lji->lki'], [R(3, 4, 4)], [R(4, 4, 3)])151def test_einsum_ellipses(): combo_check(np.einsum, [1, 2], ['...jk,...lj->...lk', '...,...->...'],152 [R(4, 4), R(3, 4, 4)],153 [R(4, 4), R(3, 4, 4)])154def test_einsum_ellipses_tail(): combo_check(np.einsum, [1, 2], ['jk...,lj...->lk...'],155 [R(3, 2), R(3, 2, 4)],156 [R(2, 3), R(2, 3, 4)])157def test_einsum_ellipses_center(): combo_check(np.einsum, [1, 2], ['j...k,lj...->lk...'],158 [R(2, 2), R(2, 2, 2)],159 [R(2, 2), R(2, 2, 2)])160def test_einsum_three_args(): combo_check(np.einsum, [1, 2], ['ijk,lji,lli->lki'],161 [R(3, 4, 4)], [R(4, 4, 3)], [R(4, 4, 3)])162def test_einsum2_transpose(): combo_check(np.einsum, [0], [R(1, 1), R(4,4), R(3,4)], [(0,1)], [(1,0)])163def test_einsum2_matmult(): combo_check(np.einsum, [0, 2], [R(2, 3)], [(0,1)], [R(3,4)], [(1,2)], [(0,2)])164def test_einsum2_matmult_broadcast(): combo_check(np.einsum, [0, 2],165 [R(2, 3), R(2, 2, 3)], [(Ellipsis, 0, 1)],166 [R(3, 4), R(2, 3, 4)], [(Ellipsis, 1, 2)],167 [(Ellipsis, 0, 2)])168def test_einsum2_covsum(): combo_check(np.einsum, [0, 2], [R(3, 4, 4)], [(0,1,2)], [R(4, 4, 3)], [(3,1,0)], [(3,2,0)])169def test_einsum2_three_args(): combo_check(np.einsum, [0, 2],170 [R(3, 4, 4)], [(0,1,2)], [R(4, 4, 3)], [(3,1,0)], [R(4, 4, 3)], [(3,3,0)], [(3,2,0)])171def test_trace(): combo_check(np.trace, [0], [R(5, 5), R(4, 5), R(5, 4), R(3, 4, 5)], offset=[-1, 0, 1])172def test_diag(): combo_check(np.diag, [0], [R(5, 5)], k=[-1, 0, 1])173def test_diag_flat():combo_check(np.diag, [0], [R(5)], k=[-1, 0, 1])174def test_tril(): combo_check(np.tril, [0], [R(5, 5)], k=[-1, 0, 1])175def test_triu(): combo_check(np.tril, [0], [R(5, 5)], k=[-1, 0, 1])176def test_tril_3d(): combo_check(np.tril, [0], [R(5, 5, 4)], k=[-1, 0, 1])177def test_triu_3d(): combo_check(np.tril, [0], [R(5, 5, 4)], k=[-1, 0, 1])178def test_swapaxes(): combo_check(np.swapaxes, [0], [R(3, 4, 5)], axis1=[0, 1, 2], axis2=[0, 1, 2])179def test_rollaxis(): combo_check(np.rollaxis, [0], [R(2, 3, 4)], axis =[0, 1, 2], start=[0, 1, 2, 3])180def test_cross(): combo_check(np.cross, [0, 1], [R(3, 3)], [R(3, 3)],181 axisa=[-1, 0, 1], axisb=[-1, 0, 1], axisc=[-1, 0, 1], axis=[None, -1, 0, 1])182def test_vsplit_2d(): combo_check(np.vsplit, [0], [R(4, 8)], [4, [1, 2]])183def test_vsplit_3d(): combo_check(np.vsplit, [0], [R(4, 4, 4)], [2, [1, 2]])184def test_hsplit_2d(): combo_check(np.hsplit, [0], [R(4, 8)], [4, [1, 2]])185def test_hsplit_3d(): combo_check(np.hsplit, [0], [R(4, 4, 4)], [2, [1, 2]])186def test_dsplit_3d(): combo_check(np.dsplit, [0], [R(4, 4, 4)], [2, [1, 2]])187def test_split_1d(): combo_check(np.split, [0], [R(1), R(7)], [1], axis=[0])188def test_split_2d(): combo_check(np.split, [0], [R(4, 8)], [4, [1, 2]], axis=[0, 1])189def test_split_3d(): combo_check(np.split, [0], [R(4, 4, 4)], [2, [1, 2]], axis=[0, 1, 2])190def test_array_split_1d(): combo_check(np.array_split, [0], [R(1), R(7)], [1, 3], axis=[0])191def test_array_split_2d(): combo_check(np.array_split, [0], [R(7, 7)], [4, [3, 5]], axis=[0, 1])192def test_array_split_3d(): combo_check(np.array_split, [0], [R(7, 7, 7)], [4, [3, 5]], axis=[0, 1, 2])193def test_concatenate_1ist(): combo_check(np.concatenate, [0], [(R(1), R(3))], axis=[0])194def test_concatenate_tuple(): combo_check(np.concatenate, [0], [[R(1), R(3)]], axis=[0])195def test_concatenate_2d(): combo_check(np.concatenate, [0], [(R(2, 2), R(2, 2))], axis=[0, 1])196def test_concatenate_3d(): combo_check(np.concatenate, [0], [(R(2, 2, 2), R(2, 2, 2))], axis=[0, 1, 2])197def test_vstack_1d(): combo_check(np.vstack, [0], [R(2), (R(2), R(2))])198def test_vstack_2d(): combo_check(np.vstack, [0], [R(2, 3), (R(2, 4), R(1, 4))])199def test_vstack_3d(): combo_check(np.vstack, [0], [R(2, 3, 4), (R(2, 3, 4), R(5, 3, 4))])200def test_hstack_1d(): combo_check(np.hstack, [0], [R(2), (R(2), R(2))])201def test_hstack_2d(): combo_check(np.hstack, [0], [R(3, 2), (R(3, 4), R(3, 5))])202def test_hstack_3d(): combo_check(np.hstack, [0], [R(2, 3, 4), (R(2, 1, 4), R(2, 5, 4))])203def test_stack_1d(): combo_check(np.stack, [0], [(R(2),), (R(2), R(2))], axis=[0, 1])204def test_row_stack_1d(): combo_check(np.row_stack, [0], [R(2), (R(2), R(2))])205def test_row_stack_2d(): combo_check(np.row_stack, [0], [R(2, 3), (R(2, 4), R(1, 4))])206def test_column_stack_1d(): combo_check(np.column_stack, [0], [R(2), (R(2), R(2))])207def test_column_stack_2d(): combo_check(np.column_stack, [0], [R(2, 2), (R(2, 2), R(2, 2))])208def test_select(): combo_check(np.select, [1], [[R(3,4,5) > 0, R(3,4,5) > 0, R(3,4,5) > 0]],...

Full Screen

Full Screen

test_schema.py

Source:test_schema.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2"""3***********************************4tests.test_schema5***********************************6Tests for the schema extensions written in :ref:`sqlathanor.schema`.7"""8import pytest9from sqlathanor import Column10from tests.fixtures import db_engine, tables, base_model, db_session, \11 model_single_pk, model_composite_pk, instance_single_pk, instance_composite_pk, \12 model_complex, instance_complex13@pytest.mark.parametrize('test_index, test_complex, column_name, expected_result', [14 (0, False, 'id', (False, False)),15 (0, True, 'id', (True, True)),16 (0, False, 'name', (False, False)),17 (0, True, 'name', (True, True)),18 (0, True, 'password', (True, False)),19 (0, True, 'hidden', (False, False)),20 (0, False, 'addresses', (False, False)),21 (0, True, 'addresses', (False, False)),22 (1, False, 'email', (False, False)),23 (1, True, 'email', (True, True)),24 (1, False, 'user_id', (False, False)),25 (1, True, 'user_id', (False, False)),26])27def test_model_supports_csv(request,28 model_single_pk,29 model_complex,30 test_index,31 test_complex,32 column_name,33 expected_result):34 if test_complex:35 target = model_complex[test_index]36 else:37 target = model_single_pk[test_index]38 column = getattr(target, column_name)39 assert column.supports_csv == expected_result40@pytest.mark.parametrize('test_index, test_complex, column_name, expected_result', [41 (0, False, 'id', (False, False)),42 (0, True, 'id', (True, True)),43 (0, False, 'name', (False, False)),44 (0, True, 'name', (True, True)),45 (0, True, 'password', (True, False)),46 (0, True, 'hidden', (False, False)),47 (0, False, 'addresses', (False, False)),48 (0, True, 'addresses', (True, True)),49 (1, False, 'email', (False, False)),50 (1, True, 'email', (True, True)),51 (1, False, 'user_id', (False, False)),52 (1, True, 'user_id', (False, False)),53])54def test_model_supports_json(request,55 model_single_pk,56 model_complex,57 test_index,58 test_complex,59 column_name,60 expected_result):61 if test_complex:62 target = model_complex[test_index]63 else:64 target = model_single_pk[test_index]65 column = getattr(target, column_name)66 assert column.supports_json == expected_result67@pytest.mark.parametrize('test_index, test_complex, column_name, expected_result', [68 (0, False, 'id', (False, False)),69 (0, True, 'id', (True, True)),70 (0, False, 'name', (False, False)),71 (0, True, 'name', (True, True)),72 (0, True, 'password', (True, False)),73 (0, True, 'hidden', (False, False)),74 (0, False, 'addresses', (False, False)),75 (0, True, 'addresses', (True, True)),76 (1, False, 'email', (False, False)),77 (1, True, 'email', (True, True)),78 (1, False, 'user_id', (False, False)),79 (1, True, 'user_id', (False, False)),80])81def test_model_supports_yaml(request,82 model_single_pk,83 model_complex,84 test_index,85 test_complex,86 column_name,87 expected_result):88 if test_complex:89 target = model_complex[test_index]90 else:91 target = model_single_pk[test_index]92 column = getattr(target, column_name)93 assert column.supports_yaml == expected_result94@pytest.mark.parametrize('test_index, test_complex, column_name, expected_result', [95 (0, False, 'id', (False, False)),96 (0, True, 'id', (True, True)),97 (0, False, 'name', (False, False)),98 (0, True, 'name', (True, True)),99 (0, True, 'password', (True, False)),100 (0, True, 'hidden', (False, False)),101 (0, False, 'addresses', (False, False)),102 (0, True, 'addresses', (True, False)),103 (1, False, 'email', (False, False)),104 (1, True, 'email', (True, True)),105 (1, False, 'user_id', (False, False)),106 (1, True, 'user_id', (False, False)),107])108def test_model_supports_dict(request,109 model_single_pk,110 model_complex,111 test_index,112 test_complex,113 column_name,114 expected_result):115 if test_complex:116 target = model_complex[test_index]117 else:118 target = model_single_pk[test_index]119 column = getattr(target, column_name)120 assert column.supports_dict == expected_result121@pytest.mark.parametrize('test_index, test_complex, column_name, not_none', [122 (0, False, 'id', False),123 (0, True, 'id', False),124 (0, False, 'name', False),125 (0, True, 'name', False),126 (0, True, 'password', False),127 (0, True, 'hidden', False),128 (1, False, 'email', False),129 (1, True, 'email', True),130 (1, False, 'user_id', False),131 (1, True, 'user_id', False),132])133def test_model_on_serialize(request,134 model_single_pk,135 model_complex,136 test_index,137 test_complex,138 column_name,139 not_none):140 if test_complex:141 target = model_complex[test_index]142 else:143 target = model_single_pk[test_index]144 column = getattr(target, column_name)145 assert isinstance(column.on_serialize, dict)146 for key in column.on_serialize:147 assert (column.on_serialize[key] is not None) is not_none148@pytest.mark.parametrize('test_index, test_complex, column_name, not_none', [149 (0, False, 'id', False),150 (0, True, 'id', False),151 (0, False, 'name', False),152 (0, True, 'name', False),153 (0, True, 'password', False),154 (0, True, 'hidden', False),155 (1, False, 'email', False),156 (1, True, 'email', True),157 (1, False, 'user_id', False),158 (1, True, 'user_id', False),159])160def test_model_on_deserialize(request,161 model_single_pk,162 model_complex,163 test_index,164 test_complex,165 column_name,166 not_none):167 if test_complex:168 target = model_complex[test_index]169 else:170 target = model_single_pk[test_index]171 column = getattr(target, column_name)172 assert isinstance(column.on_deserialize, dict)173 for key in column.on_deserialize:174 assert (column.on_deserialize[key] is not None) is not_none175@pytest.mark.parametrize('test_index, column_name, expected_result', [176 (0, 'hybrid', 1),177])178def test_instance_hybrid_property_get(request,179 test_index,180 instance_complex,181 column_name,182 expected_result):183 target = instance_complex[0][test_index]184 result = getattr(target, column_name)185 assert result == expected_result186@pytest.mark.parametrize('test_index, column_name, new_value', [187 (0, 'hybrid', 3),188])189def test_instance_hybrid_property_set(request,190 test_index,191 instance_complex,192 column_name,193 new_value):194 target = instance_complex[0][test_index]195 setattr(target, column_name, new_value)196 result = getattr(target, column_name)197 assert result == new_value198@pytest.mark.parametrize('test_index, column_name, expected_result', [199 (0, 'keywords_basic', (False, False)),200])201def test_instance_association_proxy_supports_json(request,202 test_index,203 instance_complex,204 column_name,205 expected_result):206 target = instance_complex[0][test_index]207 result = getattr(target.__class__, column_name)...

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 pytest-bdd 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