Best Go-testdeep code snippet using td.NotAny
td_compat.go
Source:td_compat.go
...118// CmpNone is a deprecated alias of [td.CmpNone].119var CmpNone = td.CmpNone120// CmpNot is a deprecated alias of [td.CmpNot].121var CmpNot = td.CmpNot122// CmpNotAny is a deprecated alias of [td.CmpNotAny].123var CmpNotAny = td.CmpNotAny124// CmpNotEmpty is a deprecated alias of [td.CmpNotEmpty].125var CmpNotEmpty = td.CmpNotEmpty126// CmpNotNaN is a deprecated alias of [td.CmpNotNaN].127var CmpNotNaN = td.CmpNotNaN128// CmpNotNil is a deprecated alias of [td.CmpNotNil].129var CmpNotNil = td.CmpNotNil130// CmpNotZero is a deprecated alias of [td.CmpNotZero].131var CmpNotZero = td.CmpNotZero132// CmpPPtr is a deprecated alias of [td.CmpPPtr].133var CmpPPtr = td.CmpPPtr134// CmpPtr is a deprecated alias of [td.CmpPtr].135var CmpPtr = td.CmpPtr136// CmpRe is a deprecated alias of [td.CmpRe].137var CmpRe = td.CmpRe138// CmpReAll is a deprecated alias of [td.CmpReAll].139var CmpReAll = td.CmpReAll140// CmpSet is a deprecated alias of [td.CmpSet].141var CmpSet = td.CmpSet142// CmpShallow is a deprecated alias of [td.CmpShallow].143var CmpShallow = td.CmpShallow144// CmpSlice is a deprecated alias of [td.CmpSlice].145var CmpSlice = td.CmpSlice146// CmpSmuggle is a deprecated alias of [td.CmpSmuggle].147var CmpSmuggle = td.CmpSmuggle148// CmpSStruct is a deprecated alias of [td.CmpSStruct].149var CmpSStruct = td.CmpSStruct150// CmpString is a deprecated alias of [td.CmpString].151var CmpString = td.CmpString152// CmpStruct is a deprecated alias of [td.CmpStruct].153var CmpStruct = td.CmpStruct154// CmpSubBagOf is a deprecated alias of [td.CmpSubBagOf].155var CmpSubBagOf = td.CmpSubBagOf156// CmpSubJSONOf is a deprecated alias of [td.CmpSubJSONOf].157var CmpSubJSONOf = td.CmpSubJSONOf158// CmpSubMapOf is a deprecated alias of [td.CmpSubMapOf].159var CmpSubMapOf = td.CmpSubMapOf160// CmpSubSetOf is a deprecated alias of [td.CmpSubSetOf].161var CmpSubSetOf = td.CmpSubSetOf162// CmpSuperBagOf is a deprecated alias of [td.CmpSuperBagOf].163var CmpSuperBagOf = td.CmpSuperBagOf164// CmpSuperJSONOf is a deprecated alias of [td.CmpSuperJSONOf].165var CmpSuperJSONOf = td.CmpSuperJSONOf166// CmpSuperMapOf is a deprecated alias of [td.CmpSuperMapOf].167var CmpSuperMapOf = td.CmpSuperMapOf168// CmpSuperSetOf is a deprecated alias of [td.CmpSuperSetOf].169var CmpSuperSetOf = td.CmpSuperSetOf170// CmpTruncTime is a deprecated alias of [td.CmpTruncTime].171var CmpTruncTime = td.CmpTruncTime172// CmpValues is a deprecated alias of [td.CmpValues].173var CmpValues = td.CmpValues174// CmpZero is a deprecated alias of [td.CmpZero].175var CmpZero = td.CmpZero176// All is a deprecated alias of [td.All].177var All = td.All178// Any is a deprecated alias of [td.Any].179var Any = td.Any180// Array is a deprecated alias of [td.Array].181var Array = td.Array182// ArrayEach is a deprecated alias of [td.ArrayEach].183var ArrayEach = td.ArrayEach184// Bag is a deprecated alias of [td.Bag].185var Bag = td.Bag186// Between is a deprecated alias of [td.Between].187var Between = td.Between188// Cap is a deprecated alias of [td.Cap].189var Cap = td.Cap190// Catch is a deprecated alias of [td.Catch].191var Catch = td.Catch192// Code is a deprecated alias of [td.Code].193var Code = td.Code194// Contains is a deprecated alias of [td.Contains].195var Contains = td.Contains196// ContainsKey is a deprecated alias of [td.ContainsKey].197var ContainsKey = td.ContainsKey198// Delay is a deprecated alias of [td.ContainsKey].199var Delay = td.Delay200// Empty is a deprecated alias of [td.Empty].201var Empty = td.Empty202// Gt is a deprecated alias of [td.Gt].203var Gt = td.Gt204// Gte is a deprecated alias of [td.Gte].205var Gte = td.Gte206// HasPrefix is a deprecated alias of [td.HasPrefix].207var HasPrefix = td.HasPrefix208// HasSuffix is a deprecated alias of [td.HasSuffix].209var HasSuffix = td.HasSuffix210// Ignore is a deprecated alias of [td.Ignore].211var Ignore = td.Ignore212// Isa is a deprecated alias of [td.Isa].213var Isa = td.Isa214// JSON is a deprecated alias of [td.JSON].215var JSON = td.JSON216// Keys is a deprecated alias of [td.Keys].217var Keys = td.Keys218// Lax is a deprecated alias of [td.Lax].219var Lax = td.Lax220// Len is a deprecated alias of [td.Len].221var Len = td.Len222// Lt is a deprecated alias of [td.Lt].223var Lt = td.Lt224// Lte is a deprecated alias of [td.Lte].225var Lte = td.Lte226// Map is a deprecated alias of [td.Map].227var Map = td.Map228// MapEach is a deprecated alias of [td.MapEach].229var MapEach = td.MapEach230// N is a deprecated alias of [td.N].231var N = td.N232// NaN is a deprecated alias of [td.NaN].233var NaN = td.NaN234// Nil is a deprecated alias of [td.Nil].235var Nil = td.Nil236// None is a deprecated alias of [td.None].237var None = td.None238// Not is a deprecated alias of [td.Not].239var Not = td.Not240// NotAny is a deprecated alias of [td.NotAny].241var NotAny = td.NotAny242// NotEmpty is a deprecated alias of [td.NotEmpty].243var NotEmpty = td.NotEmpty244// NotNaN is a deprecated alias of [td.NotNaN].245var NotNaN = td.NotNaN246// NotNil is a deprecated alias of [td.NotNil].247var NotNil = td.NotNil248// NotZero is a deprecated alias of [td.NotZero].249var NotZero = td.NotZero250// Ptr is a deprecated alias of [td.Ptr].251var Ptr = td.Ptr252// PPtr is a deprecated alias of [td.PPtr].253var PPtr = td.PPtr254// Re is a deprecated alias of [td.Re].255var Re = td.Re...
td_set.go
Source:td_set.go
...41// TypeBehind method can return a non-nil [reflect.Type] if all items42// known non-interface types are equal, or if only interface types43// are found (mostly issued from [Isa]) and they are equal.44//45// See also [NotAny], [SubSetOf], [SuperSetOf] and [Bag].46func Set(expectedItems ...any) TestDeep {47 return newSetBase(allSet, true, expectedItems)48}49// summary(SubSetOf): compares the contents of an array or a slice50// ignoring duplicates and without taking care of the order of items51// but with potentially some exclusions52// input(SubSetOf): array,slice,ptr(ptr on array/slice)53// SubSetOf operator compares the contents of an array or a slice (or a54// pointer on array/slice) ignoring duplicates and without taking care55// of the order of items.56//57// During a match, each array/slice item should be matched by an58// expected item to succeed. But some expected items can be missing59// from the compared array/slice.60//61// td.Cmp(t, []int{1, 1}, td.SubSetOf(1, 2)) // succeeds62// td.Cmp(t, []int{1, 1, 2}, td.SubSetOf(1, 3)) // fails, 2 is an extra item63//64// // works with slices/arrays of any type65// td.Cmp(t, personSlice, td.SubSetOf(66// Person{Name: "Bob", Age: 32},67// Person{Name: "Alice", Age: 26},68// ))69//70// To flatten a non-[]any slice/array, use [Flatten] function71// and so avoid boring and inefficient copies:72//73// expected := []int{2, 1}74// td.Cmp(t, []int{1, 1}, td.SubSetOf(td.Flatten(expected))) // succeeds75// // = td.Cmp(t, []int{1, 1}, td.SubSetOf(2, 1))76//77// exp1 := []int{2, 1}78// exp2 := []int{5, 8}79// td.Cmp(t, []int{1, 5, 1, 3, 3},80// td.SubSetOf(td.Flatten(exp1), 3, td.Flatten(exp2))) // succeeds81// // = td.Cmp(t, []int{1, 5, 1, 3, 3}, td.SubSetOf(2, 1, 3, 5, 8))82//83// TypeBehind method can return a non-nil [reflect.Type] if all items84// known non-interface types are equal, or if only interface types85// are found (mostly issued from [Isa]) and they are equal.86//87// See also [NotAny], [Set] and [SuperSetOf].88func SubSetOf(expectedItems ...any) TestDeep {89 return newSetBase(subSet, true, expectedItems)90}91// summary(SuperSetOf): compares the contents of an array or a slice92// ignoring duplicates and without taking care of the order of items93// but with potentially some extra items94// input(SuperSetOf): array,slice,ptr(ptr on array/slice)95// SuperSetOf operator compares the contents of an array or a slice (or96// a pointer on array/slice) ignoring duplicates and without taking97// care of the order of items.98//99// During a match, each expected item should match in the compared100// array/slice. But some items in the compared array/slice may not be101// expected.102//103// td.Cmp(t, []int{1, 1, 2}, td.SuperSetOf(1)) // succeeds104// td.Cmp(t, []int{1, 1, 2}, td.SuperSetOf(1, 3)) // fails, 3 is missing105//106// // works with slices/arrays of any type107// td.Cmp(t, personSlice, td.SuperSetOf(108// Person{Name: "Bob", Age: 32},109// Person{Name: "Alice", Age: 26},110// ))111//112// To flatten a non-[]any slice/array, use [Flatten] function113// and so avoid boring and inefficient copies:114//115// expected := []int{2, 1}116// td.Cmp(t, []int{1, 1, 2, 8}, td.SuperSetOf(td.Flatten(expected))) // succeeds117// // = td.Cmp(t, []int{1, 1, 2, 8}, td.SubSetOf(2, 1))118//119// exp1 := []int{2, 1}120// exp2 := []int{5, 8}121// td.Cmp(t, []int{1, 5, 1, 8, 42, 3, 3},122// td.SuperSetOf(td.Flatten(exp1), 3, td.Flatten(exp2))) // succeeds123// // = td.Cmp(t, []int{1, 5, 1, 8, 42, 3, 3}, td.SuperSetOf(2, 1, 3, 5, 8))124//125// TypeBehind method can return a non-nil [reflect.Type] if all items126// known non-interface types are equal, or if only interface types127// are found (mostly issued from [Isa]) and they are equal.128//129// See also [NotAny], [Set] and [SubSetOf].130func SuperSetOf(expectedItems ...any) TestDeep {131 return newSetBase(superSet, true, expectedItems)132}133// summary(NotAny): compares the contents of an array or a slice, no134// values have to match135// input(NotAny): array,slice,ptr(ptr on array/slice)136// NotAny operator checks that the contents of an array or a slice (or137// a pointer on array/slice) does not contain any of "notExpectedItems".138//139// td.Cmp(t, []int{1}, td.NotAny(1, 2, 3)) // fails140// td.Cmp(t, []int{5}, td.NotAny(1, 2, 3)) // succeeds141//142// // works with slices/arrays of any type143// td.Cmp(t, personSlice, td.NotAny(144// Person{Name: "Bob", Age: 32},145// Person{Name: "Alice", Age: 26},146// ))147//148// To flatten a non-[]any slice/array, use [Flatten] function149// and so avoid boring and inefficient copies:150//151// notExpected := []int{2, 1}152// td.Cmp(t, []int{4, 4, 3, 8}, td.NotAny(td.Flatten(notExpected))) // succeeds153// // = td.Cmp(t, []int{4, 4, 3, 8}, td.NotAny(2, 1))154//155// notExp1 := []int{2, 1}156// notExp2 := []int{5, 8}157// td.Cmp(t, []int{4, 4, 42, 8},158// td.NotAny(td.Flatten(notExp1), 3, td.Flatten(notExp2))) // succeeds159// // = td.Cmp(t, []int{4, 4, 42, 8}, td.NotAny(2, 1, 3, 5, 8))160//161// Beware that NotAny(â¦) is not equivalent to Not(Any(â¦)) but is like162// Not(SuperSet(â¦)).163//164// TypeBehind method can return a non-nil [reflect.Type] if all items165// known non-interface types are equal, or if only interface types166// are found (mostly issued from [Isa]) and they are equal.167//168// See also [Set], [SubSetOf] and [SuperSetOf].169func NotAny(notExpectedItems ...any) TestDeep {170 return newSetBase(noneSet, true, notExpectedItems)171}...
td_set_test.go
Source:td_set_test.go
...97 testName)98 // Lax99 checkOK(t, got, td.Lax(td.SuperSetOf(5, float64(4), 1, 3)), testName)100 //101 // NotAny102 checkOK(t, got, td.NotAny(10, 20, 30), testName)103 checkError(t, got, td.NotAny(3, 66),104 expectedError{105 Message: mustBe("comparing %% as a NotAny"),106 Path: mustBe("DATA"),107 Summary: mustBe("Extra item: (3)"),108 },109 testName)110 // Lax111 checkOK(t, got, td.NotAny(float64(3)), testName)112 checkError(t, got, td.Lax(td.NotAny(float64(3))),113 expectedError{114 Message: mustBe("comparing %% as a NotAny"),115 Path: mustBe("DATA"),116 Summary: mustBe("Extra item: (3.0)"),117 },118 testName)119 }120 checkOK(t, []any{123, "foo", nil, "bar", nil},121 td.Set("foo", "bar", 123, nil))122 var nilSlice MySlice123 for idx, got := range []any{([]int)(nil), &nilSlice} {124 testName := fmt.Sprintf("Test #%d", idx)125 checkOK(t, got, td.Set(), testName)126 checkOK(t, got, td.SubSetOf(), testName)127 checkOK(t, got, td.SubSetOf(1, 2), testName)128 checkOK(t, got, td.SuperSetOf(), testName)129 checkOK(t, got, td.NotAny(), testName)130 checkOK(t, got, td.NotAny(1, 2), testName)131 }132 for idx, set := range []td.TestDeep{133 td.Set(123),134 td.SubSetOf(123),135 td.SuperSetOf(123),136 td.NotAny(123),137 } {138 testName := fmt.Sprintf("Test #%d â %s", idx, set)139 checkError(t, 123, set,140 expectedError{141 Message: mustBe("bad kind"),142 Path: mustBe("DATA"),143 Got: mustBe("int"),144 Expected: mustBe("slice OR array OR *slice OR *array"),145 },146 testName)147 num := 123148 checkError(t, &num, set,149 expectedError{150 Message: mustBe("bad kind"),151 Path: mustBe("DATA"),152 Got: mustBe("*int"),153 Expected: mustBe("slice OR array OR *slice OR *array"),154 },155 testName)156 var list *MySlice157 checkError(t, list, set,158 expectedError{159 Message: mustBe("nil pointer"),160 Path: mustBe("DATA"),161 Got: mustBe("nil *slice (*td_test.MySlice type)"),162 Expected: mustBe("non-nil *slice OR *array"),163 },164 testName)165 checkError(t, nil, set,166 expectedError{167 Message: mustBe("bad kind"),168 Path: mustBe("DATA"),169 Got: mustBe("nil"),170 Expected: mustBe("slice OR array OR *slice OR *array"),171 },172 testName)173 }174 //175 // String176 test.EqualStr(t, td.Set(1).String(), "Set(1)")177 test.EqualStr(t, td.Set(1, 2).String(), "Set(1,\n 2)")178 test.EqualStr(t, td.SubSetOf(1).String(), "SubSetOf(1)")179 test.EqualStr(t, td.SubSetOf(1, 2).String(), "SubSetOf(1,\n 2)")180 test.EqualStr(t, td.SuperSetOf(1).String(), "SuperSetOf(1)")181 test.EqualStr(t, td.SuperSetOf(1, 2).String(),182 "SuperSetOf(1,\n 2)")183 test.EqualStr(t, td.NotAny(1).String(), "NotAny(1)")184 test.EqualStr(t, td.NotAny(1, 2).String(), "NotAny(1,\n 2)")185}186func TestSetTypeBehind(t *testing.T) {187 equalTypes(t, td.Set(6, 5), ([]int)(nil))188 equalTypes(t, td.Set(6, "foo"), nil)189 equalTypes(t, td.SubSetOf(6, 5), ([]int)(nil))190 equalTypes(t, td.SubSetOf(6, "foo"), nil)191 equalTypes(t, td.SuperSetOf(6, 5), ([]int)(nil))192 equalTypes(t, td.SuperSetOf(6, "foo"), nil)193 equalTypes(t, td.NotAny(6, 5), ([]int)(nil))194 equalTypes(t, td.NotAny(6, "foo"), nil)195 // Always the same non-interface type (even if we encounter several196 // interface types)197 equalTypes(t,198 td.Set(199 td.Empty(),200 5,201 td.Isa((*error)(nil)), // interface type (in fact pointer to ...)202 td.All(6, 7),203 td.Isa((*fmt.Stringer)(nil)), // interface type204 8),205 ([]int)(nil))206 // Only one interface type207 equalTypes(t,208 td.Set(...
NotAny
Using AI Code Generation
1import (2func main() {3 xlFile, err := xlsx.OpenFile("Book1.xlsx")4 if err != nil {5 fmt.Println("Error opening file:", err)6 }7 for _, sheet := range xlFile.Sheets {8 for _, row := range sheet.Rows {9 for _, cell := range row.Cells {10 text := cell.String()11 fmt.Printf("%s12 }13 }14 }15}
NotAny
Using AI Code Generation
1import "fmt"2import "github.com/sergi/go-diff/diffmatchpatch"3func main() {4 dmp := diffmatchpatch.New()5 d := dmp.DiffMain("The quick brown fox jumps over the lazy dog.", "That quick brown fox jumped over a lazy dog.", false)6 fmt.Println(dmp.DiffPrettyText(d))7 d = dmp.DiffCleanupSemantic(d)8 fmt.Println(dmp.DiffPrettyText(d))9 d = dmp.DiffCleanupEfficiency(d)10 fmt.Println(dmp.DiffPrettyText(d))11}12How to use DiffMainLines() method?13The DiffMainLines() method is used to compare two files. The following code shows how to use DiffMainLines() method:14import "fmt"15import "github.com/sergi/go-diff/diffmatchpatch"16func main() {17 dmp := diffmatchpatch.New()18 fmt.Println(dmp.DiffPrettyText(d
NotAny
Using AI Code Generation
1import (2func main() {3 xlFile, err := xlsx.OpenFile("1.xlsx")4 if err != nil {5 fmt.Println(err)6 }7 for _, row := range sheet.Rows {8 for _, cell := range row.Cells {9 fmt.Printf("%s\t", cell.Value)10 }11 fmt.Printf("12 }13}
NotAny
Using AI Code Generation
1import "fmt"2func main() {3 result = x.NotAny(y)4 fmt.Printf("Result of x.NotAny(y) is: %t5}6import "fmt"7func main() {8 result = x.NotAny(y)9 fmt.Printf("Result of x.NotAny(y) is: %t10}11Recommended Posts: Go | atomic.AddInt64() method12Go | atomic.CompareAndSwapInt32() method13Go | atomic.CompareAndSwapInt64() method14Go | atomic.CompareAndSwapUint32() method15Go | atomic.CompareAndSwapUint64() method16Go | atomic.CompareAndSwapUintptr() method17Go | atomic.LoadInt32() method18Go | atomic.LoadInt64() method19Go | atomic.LoadUint32() method20Go | atomic.LoadUint64() method21Go | atomic.LoadUintptr() method22Go | atomic.StoreInt32() method23Go | atomic.StoreInt64() method24Go | atomic.StoreUint32() method25Go | atomic.StoreUint64() method26Go | atomic.StoreUintptr() method27Go | atomic.SwapInt32() method28Go | atomic.SwapInt64() method29Go | atomic.SwapUint32() method30Go | atomic.SwapUint64() method31Go | atomic.SwapUintptr() method32Go | atomic.AddUint32() method33Go | atomic.AddUint64() method34Go | atomic.AddUintptr() method35Go | atomic.AddInt32() method36Go | atomic.StorePointer() method37Go | atomic.SwapPointer() method38Go | atomic.LoadPointer() method39Go | atomic.LoadInt32() method40Go | atomic.LoadInt64() method41Go | atomic.LoadUint32() method42Go | atomic.LoadUint64() method43Go | atomic.LoadUintptr() method44Go | atomic.StoreInt32()
NotAny
Using AI Code Generation
1import (2func main() {3 var re = regexp.MustCompile(`\w+`)4 var found = re.FindAllString(str, -1)5 fmt.Println(found)6 var notFound = re.FindAllString(str, 2)7 fmt.Println(notFound)8}
NotAny
Using AI Code Generation
1import "fmt"2import "regexp"3func main() {4 var re = regexp.MustCompile(`\d+`)5 var found = re.FindString(str)6 fmt.Println(found)7}
NotAny
Using AI Code Generation
1import (2func main() {3 re := regexp.MustCompile(`(?i)foo`)4 s := []byte(`seafood fool`)5 b := [][]byte{[]byte(`seafood`), []byte(`foo`), []byte(`fool`)}6 fmt.Printf("Match: %v7", re.Match(s))8 fmt.Printf("Match: %v9", re.Match(b[0]))10 fmt.Printf("Match: %v11", re.Match(b[1]))12 fmt.Printf("Match: %v13", re.Match(b[2]))14 fmt.Printf("Find: %v15", re.Find(b))16 fmt.Printf("FindAll: %v17", re.FindAll(b, -1))18 fmt.Printf("FindAll: %v19", re.FindAll(b, 2))20 fmt.Printf("FindIndex: %v21", re.FindIndex(b[0]))22 fmt.Printf("FindAllIndex: %v23", re.FindAllIndex(b, -1))24 fmt.Printf("FindAllIndex: %v25", re.FindAllIndex(b, 2))26 fmt.Printf("FindAllSubmatch: %v27", re.FindAllSubmatch(b, -1))28 fmt.Printf("FindAllSubmatch: %v29", re.FindAllSubmatch(b, 2))30 fmt.Printf("FindAllSubmatchIndex: %v31", re.FindAllSubmatchIndex(b, -1))
NotAny
Using AI Code Generation
1import "fmt"2import "github.com/rahulrai-in/govalidator/td"3func main() {4 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5))5 fmt.Println(td.NotAny("a", "b", "c", "d", "e"))6 fmt.Println(td.NotAny("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"))7 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))8}9import "fmt"10import "github.com/rahulrai-in/govalidator/td"11func main() {12 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5))13 fmt.Println(td.NotAny("a", "b", "c", "d", "e"))14 fmt.Println(td.NotAny("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"))15 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))16}17import "fmt"18import "github.com/rahulrai-in/govalidator/td"19func main() {20 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5))21 fmt.Println(td.NotAny("a", "b", "c", "d", "e"))22 fmt.Println(td.NotAny("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"))23 fmt.Println(td.NotAny(2, 1, 2, 3, 4, 5,
NotAny
Using AI Code Generation
1import (2func main() {3 td := `^((?!(d|e|f)).)*$`4 r := regexp.MustCompile(td)5 fmt.Println(r.MatchString("abc"))6 fmt.Println(r.MatchString("def"))7 fmt.Println(r.MatchString("abce"))8 fmt.Println(r.MatchString("abcf"))9 fmt.Println(r.MatchString("abcf"))10 fmt.Println(r.MatchString("abcf"))11}
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!!