GoDasturchi
Subtests and Parallel Testing

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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