我有5个端点,其中有方法,如GET,POST,和DELETE来测试。我在构建的测试包中使用go编写了测试用例。我担心我错过了一些在我看来并不引人注目的案例,我已经在代码审查中为我的测试用例进行了评审,但是我没有得到任何响应。我还跟踪了这篇文章在golang中测试HTTP路由。所有这些测试用例都在检查响应代码。
问题是,我的大多数测试用例都遵循类似的模式,在这种模式下,我以不同的格式发布数据并检查响应代码。我强烈地感到,当我将API推到prod时,我遗漏了一些会破坏API的东西。我需要一些关于测试这些路线的洞察力,这样我才能有信心推动api去刺激。
main_test.go
func TestSigHandler(t *testing.T){
test_cases := []string{"2021205"}
// GET Testing
for _, method := range test_cases{
usersUrl = fmt.Sprintf("%s/1/sig/id/%s", server.URL, method) //Grab the address for the API endpoint
request, err := http.NewRequest("GET", usersUrl, nil)
res, err := http.DefaultClient.Do(request)
if err != nil {
t.Error(err) //Something is wrong while sending request
}
if res.StatusCode != 200 {
t.Errorf("Something went wrong : ", res.StatusCode) //Uh-oh this means our test failed
}
}
// POST Testing
sig := []byte( `{
"raw": "a new sig"
}`)
usersUrl = fmt.Sprintf("%s/1/sig/id/2021205", server.URL) //Grab the address for the API endpoint
request, err := http.NewRequest("POST", usersUrl, bytes.NewBuffer(sig))
if err != nil{
t.Error(err)
}
request.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(request)
if err != nil {
t.Error(err) //Something is wrong while sending request
}
if res.StatusCode != 200 {
t.Errorf(" Something Went Wrong: ", res.StatusCode) //Uh-oh this means our test failed
}
// DELETE Testing
sigs_delete_cases := []string{ "1000345"}
for _, sig_to_be_deleted := range sigs_delete_cases{
usersUrl = fmt.Sprintf("%s/1/sig/id/%s", server.URL, sig_to_be_deleted) //Grab the address for the API endpoint
request, err := http.NewRequest("DELETE", usersUrl, nil)
res, err := http.DefaultClient.Do(request)
if err != nil {
t.Error(err) //Something is wrong while sending request
}
if res.StatusCode != 200 {
t.Errorf("Tried to delete a reserved Id : ", res.StatusCode) //Uh-oh this means our test failed
}
}
}发布于 2017-07-25 18:06:38
我喜欢这样做:
然后我尝试测试,它们都是阳性的和阴性的。我试着用错误、超时、不正确的答复来检查情况。
在我的测试中,我像往常一样使用了客户机http,所以使用了httptest包。
https://stackoverflow.com/questions/45287975
复制相似问题