美文网首页
Docker分享-用工具来测试Dockertest

Docker分享-用工具来测试Dockertest

作者: 糖醋沼跃鱼 | 来源:发表于2022-04-10 15:19 被阅读0次

    Dokcer分享-Dockertest

    测试一直是开发不可缺少的一部分,docker官网介绍了如何跑一些简单的测试,来测试你刚刚部署的程序。

    我还发现了一个很神奇的事情,我发现,docker这部分,官网中java,和go都是带测试的,唯独python没有,有兴趣你们可以看看放上链接。https://docs.docker.com/language/golang/run-tests/

    func TestRespondsWithLove(t *testing.T) {
    
        pool, err := dockertest.NewPool("")
        require.NoError(t, err, "could not connect to Docker")
    
        resource, err := pool.Run("docker-gs-ping", "latest", []string{})
        require.NoError(t, err, "could not start container")
    
        t.Cleanup(func() {
            require.NoError(t, pool.Purge(resource), "failed to remove container")
        })
    
        var resp *http.Response
    
        err = pool.Retry(func() error {
            resp, err = http.Get(fmt.Sprint("http://localhost:", resource.GetPort("8080/tcp"), "/"))
            if err != nil {
                t.Log("container not ready, waiting...")
                return err
            }
            return nil
        })
        require.NoError(t, err, "HTTP error")
        defer resp.Body.Close()
    
        require.Equal(t, http.StatusOK, resp.StatusCode, "HTTP status code")
    
        body, err := io.ReadAll(resp.Body)
        require.NoError(t, err, "failed to read HTTP body")
    
        // Finally, test the business requirement!
        require.Contains(t, string(body), "<3", "does not respond with love?")
    }
    
    

    测试应用程序还有许多不同的方法,这个例子只有高级的功能,应用层测试,之后还有自动化管道。

    测试使用了ory/dockertest Go模块

    主要是想分享为什么要用Dockertest?

    当我们在开发的时候,大多数的服务都需要应用的数据库,所以与数据库服务进行单元测试就会很麻烦,要耗费额外的精力,可能要去模拟数据库,找一些假数据来测试,有时候可能因为一些小的更改就需要重写一些模拟function。为了避免这种情况,可以用真实的数据库去测试这些特定的服务,这就需要对容器有一个很好的控制,docker是运行单元测试的完美系统,因为他可以在几秒钟内启动容器,在测试完成时终止他们。Dockertest库久提供了非常好用的命令来启动Docker容器,并应用于测试当中。

    相关文章

      网友评论

          本文标题:Docker分享-用工具来测试Dockertest

          本文链接:https://www.haomeiwen.com/subject/jmgisrtx.html