Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Terokai misteri kes ujian menggunakan ujian go

Terokai misteri kes ujian menggunakan ujian go

王林
王林asal
2024-04-07 14:21:01517semak imbas

Arahan ujian go dalam Go menyediakan mekanisme kes ujian yang fleksibel, termasuk: peraturan penamaan: Uji55f0d825e1d75c07a9ec1111e7915a10, parameter ialah *pengujian. Penegasan T: sahkan sama ada nilai yang dijangkakan dan nilai sebenar adalah konsisten, seperti t. Equal() dan t .Error() subtest: menguraikan kes ujian besar kepada bahagian yang lebih kecil, gunakan t.Run() untuk membuat ujian jadual: gunakan data jadual untuk menjalankan kes ujian, gunakan t.RunTable() untuk mencipta kes praktikal: tunjukkan menggunakan ujian go untuk menguji Perkhidmatan Web

利用 go test 探索测试用例的奥秘

Gunakan Ujian Go untuk meneroka rahsia kes ujian

Dalam Go, menggunakan perintah go test untuk ujian boleh memastikan ketepatan dan kebolehpercayaan kod. Kuasanya datang daripada mekanisme kes ujian yang fleksibel dan boleh diperluaskan. go test 命令进行测试可以确保代码的正确性和可靠性。它的强大功能来自灵活且可扩展的测试用例机制。

测试用例的基本语法

测试用例函数的命名规则遵循以下格式: Test9b49193a68efaa6280f23fff2e0a30c0。每个测试用例函数必须有一个 *testing.T 类型参数,用于报告测试状态和其他信息。

import "testing"

func TestAdd(t *testing.T) {
    // ... 测试代码
}

断言

断言是用来验证期望值和实际值是否一致的函数。Go 的测试包提供了几个断言函数,比如:

  • t.Equal(a, b):验证 a 等于 b
  • t.NotEqual(a, b):验证 a 不等于 b
  • t.True(x):验证 x 为 true
  • t.False(x):验证 x 为 false
  • t.Error(err):验证 err 不为 nil

子测试

子测试允许将大型测试用例分解成较小的、可管理的部分。使用 t.Run() 函数创建子测试,传递子测试名称和一个测试函数。

func TestMath(t *testing.T) {
    t.Run("add", func(t *testing.T) {
        // 测试加法的子测试
    })

    t.Run("subtract", func(t *testing.T) {
        // 测试减法的子测试
    })
}

表格测试

表格测试可让您使用表格数据运行一组测试用例。使用 t.RunTable() 函数创建表格测试,传递表格数据和一个测试函数。

func TestTable(t *testing.T) {
    type Input struct {
        a, b int
    }

    tests := []Input{
        {1, 2},
        {3, 4},
        {5, 6},
    }

    t.RunTable("add", func(t *testing.T, in Input) {
        // 测试 add 函数,使用 in.a 和 in.b
    }, tests)
}

实战案例:测试 Web 服务

下面是一个使用 go test 测试 Web 服务的示例:

import (
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestGetProducts(t *testing.T) {
    // 创建一个模拟 HTTP 请求
    req, err := http.NewRequest("GET", "/api/products", nil)
    if err != nil {
        t.Fatal(err)
    }

    // 创建一个响应记录器
    rr := httptest.NewRecorder()

    // 调用正在测试的处理程序
    http.HandlerFunc("/api/products", getProducts).ServeHTTP(rr, req)

    // 验证响应的状态码
    if status := rr.Code; status != http.StatusOK {
        t.Errorf("错误的状态码:%d", status)
    }

    // 验证响应 body
    expected := `{"products": [{"id": 1, "name": "Product 1"}, {"id": 2, "name": "Product 2"}]}`
    if body := rr.Body.String(); body != expected {
        t.Errorf("错误的响应 body:%s", body)
    }
}

结语

go test

Sintaks asas kes ujian

Peraturan penamaan fungsi kes ujian mengikut format berikut: Ujiana3221f3bf341ec50d3ea1c4889ed3851. Setiap fungsi kes ujian mesti mempunyai parameter jenis *testing.T yang melaporkan status ujian dan maklumat lain. 🎜rrreee

Penegasan

🎜Penegasan ialah fungsi yang digunakan untuk mengesahkan sama ada nilai jangkaan dan nilai sebenar adalah konsisten. Pakej ujian Go menyediakan beberapa fungsi penegasan, seperti: 🎜
  • t.Equal(a, b): Sahkan bahawa a adalah sama dengan b
  • t.NotEqual(a, b): Sahkan bahawa a tidak sama dengan b
  • t.True(x): Sahkan bahawa x adalah benar li>
  • t.False(x): Sahkan bahawa x adalah palsu
  • t.Error(err): Sahkan bahawa ralat itu bukan nil
  • ul>

    Subtests

    🎜Subtests membenarkan kes ujian besar dipecahkan kepada bahagian yang lebih kecil dan boleh diurus. Buat subtest menggunakan fungsi t.Run(), lulus nama subtest dan fungsi ujian. 🎜rrreee

    Ujian Jadual

    🎜Ujian Jadual membolehkan anda menjalankan satu set kes ujian menggunakan data jadual. Buat ujian jadual menggunakan fungsi t.RunTable(), menghantar data jadual dan fungsi ujian. 🎜rrreee

    Kes praktikal: Menguji perkhidmatan Web

    🎜Berikut ialah contoh penggunaan go test untuk menguji perkhidmatan Web: 🎜rrreee

    Kesimpulan

    🎜go test ialah alat berkuasa yang membolehkan anda membuat dan mengurus pelbagai kes ujian. Dengan memanfaatkan sepenuhnya kuasa penegasan, subujian dan ujian jadual, anda boleh menulis ujian yang komprehensif dan boleh dipercayai, meningkatkan kualiti dan kebolehpercayaan kod anda. 🎜

Atas ialah kandungan terperinci Terokai misteri kes ujian menggunakan ujian go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn