草庐IT

test_client

全部标签

unit-testing - 在 go 中正确测试 http 路由

我有5个端点,它们具有GET、POST和DELETE等方法来测试。我使用go的内置测试包编写了测试用例。我担心我遗漏了一些我不感兴趣的案例。我已经在代码审查中发布了我的测试用例进行审查,但我没有得到任何回应。我也关注了这个帖子TestingHTTProutesingolang.所有这些测试用例都在检查响应代码。问题是,我的大部分测试用例都遵循类似的模式,我以不同的格式发布数据并检查响应代码。我强烈觉得我错过了一些东西,当我将它推向产品时会破坏我的API。我需要对测试这些路由有一些了解,这样我才能有信心将API推向产品。main_test.gofuncTestSigHandler(t*t

unit-testing - 戈朗 : tests and working directory

我正在用Go为我的应用程序编写一些单元测试。但是测试失败了,因为它找不到配置文件。通常,二进制文件会在路径conf/*.conf下的工作目录中查找配置文件。我想浏览到有conf/的目录,在里面运行gotest就可以解决,但是还是报文件系统找不到路径指定。如何告诉gotest使用某个目录作为工作目录,以便测试可以实际执行? 最佳答案 您可以使用Caller获取当前测试源文件的路径,如下所示:packagesampleimport("testing""runtime""fmt")funcTestGetFilename(t*testing

go - 操作 Kubernetes 的 client-go PodList

我正在研究Kubernetesclient-go,无法理解操作Pod结构的正确方法...我得到一个PodListpods像这样://createstheclientsetclientset,err:=kubernetes.NewForConfig(config)iferr!=nil{glog.Fatal(err)}//GetPodspods,err:=clientset.CoreV1().Pods("").List(meta_v1.ListOptions{})iferr!=nil{fmt.Println(err)return}然后我可以获得每个Pod的一些值使用像这样的循环for_,p

unit-testing - 为从中读取的函数填充 os.Stdin

如何在我的测试中填充os.Stdin以获取使用扫描仪从中读取的函数?我使用以下函数通过扫描器请求用户命令行输入:funcuserInput()error{scanner:=bufio.NewScanner(os.Stdin)println("Whatisyourname?")scanner.Scan()username=scanner.Text()/*...*/}现在如何测试这种情况并模拟用户输入?以下示例不起作用。标准输入仍然是空的。funcTestUserInput(t*testing.T){varfile*os.Filefile.Write([]byte("Tom"))os.St

unit-testing - 无法在 golang : "unable to open database file [recovered]"-error 中打开 SQLite 数据库

我刚开始学习golang,不确定我的错误是概念上的还是语言上的。这很奇怪,因为只有在对我的代码进行单元测试时才会出现错误。如果我“去运行”一切正常。作为sqlite驱动程序,我使用mattn/go-sqlite3.这里是问题发生的地方:funcdbExec(command*string){db,err:=sql.Open("sqlite3",dbPath)//Pathanddriveraresetcorrecrtlydeferdb.Close()iferr!=nil{//Noproblemherepanic(err)}_,err=db.Exec(*command)iferr!=nil{

testing - 测试 Go 中未导出函数的命名约定

我无法追溯我是从哪里知道的,但通常情况下,如果有人为方法Foo编写测试,则相应的测试名为TestFoo。如果测试一个未导出的函数,比如foo,那么测试的名称应该是什么?我的问题来自这样一个事实,当要求为未导出的函数生成测试时,JetBrainsIDEforGo会生成类似Test_foo的内容。这种行为可能是有道理的,因为如果你有Foo并且它是未导出的counterpatfoo在同一个包中,你会想以某种方式对它们进行不同的测试(在至少对于IDE中的跳转测试功能而言)。那么在未导出的函数之后命名测试有什么约定吗?顺便说一句:Go的文档testing包说,如果是,则执行测试:anyfunct

go - 如何在 Go 中发布 http.Client?

我为HTTP2连接构建了一个http.Client,我需要做什么来释放客户端和使用的资源? 最佳答案 http.Client不需要任何特殊方式来释放“已用”资源。当它变得不可访问时,它使用的内存将被垃圾收集器回收。http.Client不存储连接或状态信息。文档甚至指出http.Client应该被重用:TheClient'sTransporttypicallyhasinternalstate(cachedTCPconnections),soClientsshouldbereusedinsteadofcreatedasneeded.C

http - 更改 http.Client cookie 值

我有以下代码可以按预期工作,但是在第一次请求时,我有我想要的cookie,并且只想在发送另一个请求之前更改1个cookie的值。到目前为止,我一直很不成功。jar,err:=cookiejar.New(&cookiejar.Options{PublicSuffixList:publicsuffix.List})iferr!=nil{log.Fatal(err)}client=&http.Client{Jar:jar,}firstRequest()//akaloginmainLinkedinURL:="http://www.example.com/"cookieURL,_:=url.Pa

testing - 测试后清理数据

我编写测试,在这个测试中我使用一些保存的数据文件、数据库记录等。我应该在测试结束前删除这些数据吗?例如,我检查userfinderfunc(IDint)User(*User){//myfinderhere}在测试之前,我必须为数据库创建User。那么,我是否应该做类似的事情deferdb.Clean()???与文件相同*os.File 最佳答案 为了让我们都在同一个页面上,有许多不同形式的测试。这里我们将考虑单元测试和集成测试。如果您进行单元测试,我希望仅使用模拟,而不与文件交互。所以我假设这是为了某种集成测试。Thisisalin

testing - 我如何在 Go 中查看或测试优雅重启?

我通过gin's提供HTTPhttps://github.com/fvbock/endless.我想看看与基本HTTP服务器的区别。我发送了syscall.SIGUSR1信号:syscall.Kill(getPid(),syscall.SIGUSR1)应用程序没有退出,但我无法检测到重启。我要做的是在toml配置文件更改时为应用程序初始化新配置。我的代码如下:packagemainimport("os""fmt""syscall""github.com/gin-gonic/gin""github.com/fvbock/endless""github.com/BurntSushi/tom