Unit testing Go测试中具有不同条件的多个httptest.NewRequest

Unit testing Go测试中具有不同条件的多个httptest.NewRequest,unit-testing,go,Unit Testing,Go,我在戈兰还是新来的。关于如何在Go测试文件中高效地创建多个httptest.NewRequest,您有什么想法吗?通常我会启动一个新变量来创建新请求 例如: r1 := httptest.NewRequest("GET", url, nil) r1.Header.Add("Accept-Language", "id") r1.AddCookie(&cookie) r2 := httptest.NewRequest("GET", url, nil) r1.Header.Add("Acce

我在戈兰还是新来的。关于如何在Go测试文件中高效地创建多个httptest.NewRequest,您有什么想法吗?通常我会启动一个新变量来创建新请求

例如:

r1 := httptest.NewRequest("GET", url, nil)
r1.Header.Add("Accept-Language", "id")
r1.AddCookie(&cookie)

r2 := httptest.NewRequest("GET", url, nil)
r1.Header.Add("Accept-Language", "id")

所以我想创建2个不同的请求,实际上我必须启动2个变量才能生成新的请求。我还使用了测试表,因此在第一个测试运行后无法添加cookie。

没有什么理由优化性能测试,因为测试不会编译到应用程序中,也不会与应用程序一起运行;只是不要做“愚蠢”的慢动作。他们“离线”运行以验证你的应用程序的正确性,所以测试的性能远不是关键

因此,编写测试时要简洁明了,源代码简短

但也就是说,您可以创建一个实用函数来创建和设置类似的请求,例如:

func newRequest(url string) *http.Request {
    r := httptest.NewRequest("GET", url, nil)
    r.Header.Add("Accept-Language", "id")
    return r
}
r1 := newRequest(url)
r1.AddCookie(&cookie)

r2 := newRequest(url)
并用它来重建您的示例:

func newRequest(url string) *http.Request {
    r := httptest.NewRequest("GET", url, nil)
    r.Header.Add("Accept-Language", "id")
    return r
}
r1 := newRequest(url)
r1.AddCookie(&cookie)

r2 := newRequest(url)

没有什么理由优化性能测试,因为测试不会编译到你的应用程序中,也不会与你的应用程序一起运行;只是不要做“愚蠢”的慢动作。他们“离线”运行以验证你的应用程序的正确性,所以测试的性能远不是关键

因此,编写测试时要简洁明了,源代码简短

但也就是说,您可以创建一个实用函数来创建和设置类似的请求,例如:

func newRequest(url string) *http.Request {
    r := httptest.NewRequest("GET", url, nil)
    r.Header.Add("Accept-Language", "id")
    return r
}
r1 := newRequest(url)
r1.AddCookie(&cookie)

r2 := newRequest(url)
并用它来重建您的示例:

func newRequest(url string) *http.Request {
    r := httptest.NewRequest("GET", url, nil)
    r.Header.Add("Accept-Language", "id")
    return r
}
r1 := newRequest(url)
r1.AddCookie(&cookie)

r2 := newRequest(url)

谢谢你的建议,我还在考虑为重复测试创建一个小函数。:)谢谢你的建议,我还在考虑为重复测试创建一个小函数。:)