Subtests and Parallel Testing
Subtestlar va parallel testlash
t.Run bilan yaratilgan subtestlarni t.Parallel() chaqirib, bir-biriga bog'liq bo'lmagan holda bir vaqtda ishga tushirish mumkin — bu ko'p testli loyihalarda vaqtni sezilarli tejaydi.
package main
import "testing"
func Abs(n int) int {
if n < 0 {
return -n
}
return n
}
func TestAbsParallel(t *testing.T) {
t.Run("ijobiy son", func(t *testing.T) {
t.Parallel()
if Abs(5) != 5 {
t.Errorf("Abs(5) = %d, kutilgan 5", Abs(5))
}
})
t.Run("manfiy son", func(t *testing.T) {
t.Parallel()
if Abs(-5) != 5 {
t.Errorf("Abs(-5) = %d, kutilgan 5", Abs(-5))
}
})
}Har bir subtest funksiyasi ichida chaqirilgan t.Parallel() — "men boshqa parallel testlar bilan birga ishlay olaman" deb e'lon qiladi. Muhim: parallel testlar bir-birining natijasiga ta'sir qilmasligi kerak (masalan umumiy o'zgaruvchini birga o'zgartirmasligi kerak) — aks holda natijalar tasodifiy bo'lib qolishi mumkin.
>_ Exercise
IsVowel funksiyasini ikkita parallel subtest bilan sinang.
- •"unli" nomli subtest: IsVowel('a') true bo'lishini tekshiring, t.Parallel() chaqiring
- •"undosh" nomli subtest: IsVowel('b') false bo'lishini tekshiring, t.Parallel() chaqiring
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
t.Parallel() bir-biriga bog'liq bo'lmagan subtestlarni bir vaqtda ishga tushirib, katta test to'plamlarini tezlashtiradi.
NEXT UP
Test Fixtures and Helpers
$ go run main.go
Kodingizni ishga tushiring