在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:testcontainers/testcontainers-go开源软件地址:https://github.com/testcontainers/testcontainers-go开源编程语言:Go 99.6%开源软件介绍:Testcontainers-Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done. Here's an example of a test that spins up an NGINX container validates that it returns 200 for the status code: package main
import (
"context"
"fmt"
"net/http"
"testing"
"github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/wait"
)
type nginxContainer struct {
testcontainers.Container
URI string
}
func setupNginx(ctx context.Context) (*nginxContainer, error) {
req := testcontainers.ContainerRequest{
Image: "nginx",
ExposedPorts: []string{"80/tcp"},
WaitingFor: wait.ForHTTP("/"),
}
container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: req,
Started: true,
})
if err != nil {
return nil, err
}
ip, err := container.Host(ctx)
if err != nil {
return nil, err
}
mappedPort, err := container.MappedPort(ctx, "80")
if err != nil {
return nil, err
}
uri := fmt.Sprintf("http://%s:%s", ip, mappedPort.Port())
return &nginxContainer{Container: container, URI: uri}, nil
}
func TestIntegrationNginxLatestReturn(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
ctx := context.Background()
nginxC, err := setupNginx(ctx)
if err != nil {
t.Fatal(err)
}
// Clean up the container after the test is complete
defer nginxC.Terminate(ctx)
resp, err := http.Get(nginxC.URI)
if resp.StatusCode != http.StatusOK {
t.Fatalf("Expected status code %d. Got %d.", http.StatusOK, resp.StatusCode)
}
} Cleaning up your environment after test completion should be accomplished by deferring the container termination, e.g
DocumentationMore information about TestContainers-Go can be found in ./docs, which is rendered at golang.testcontainers.org. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论