社区的代码规范及e2e测试
生活随笔
收集整理的這篇文章主要介紹了
社区的代码规范及e2e测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
golangci-lint
靜態代碼檢查工具,是對golint、gofmt的集成,速度更快。
1、安裝
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.38.0golangci-lint run [目錄]/[文件]最新的版本是1.42.0,社區使用的是1.38.0,總體來說是規則越來越嚴,我們和社區保持一致即可;
2、Linters
3、例子
golangci-lint run .\pkg\addon\? golangci-lint run .\pkg\apiserver\rest\webservice\e2e測試
e2e,端到端測試,即k8s的集成測試。
e2e測試需要一個真實的k8s集群,主要借助controller-runtime/pkg/envtest,在運行時,它會啟動一個真正的 API Server 和 etcd,隨后把 CRD 注冊到 Scheme 中,但是并不會啟動Controller Manager、kubelet等,這也意味著來自 API Server 的關于 Kubernetes 資源的事件不會真正被處理。
測試框架是ginkgo+gomega
1、安裝
go install github.com/onsi/ginkgo/ginkgogo install github.com/onsi/gomega/...2、基礎知識
ginkgo 提供了多個類型的 block,包括Describe、Context、It等,
Describe, Context, When組織成Tree結構: Describe是root, Context和When是普通TreeNode.
BeforeSuite() :在Describe 容器運行之前執行; BeforeEach() :每個測試用例運行前執行的操作,位于 Describe 中,可以有多個 JustBeforeEach() :和BeforeEach()類似,在所有的 BeforeEach()之后和It()之前執行 AfterEach() :每個測試用例運行后執行的操作 JustAfterEach() :緊跟在It()之后執行; AfterSuite() :在Describe容器之后執行Describe() :最頂層的測試用例包裹容器,同一目標的測試用例,可以嵌套 Context() :比 Describe 低一級的測試用例包裹容器,同一個條件下的測試用例 It() :單一的測試用例,位于 Describe 或者 Context 中 Specify() :It()的別名,用途和 It() 完全相同 Eventually() :測試異步邏輯: 如發送請求到隊列, 需持續polling. 在Gomega實現:斷言方式
type Assertion interface {Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolToNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolNotTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool }3、購物車的例子
4、addon的例子
PR前的準備
win10-1903、wsl2、ubuntu18.04、kind、docker desktop;
readme-generator生成測試覆蓋率報告。
sign-off-by
總結
以上是生活随笔為你收集整理的社区的代码规范及e2e测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux基本操作——VI和VIM
- 下一篇: Golang随笔