IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 社区的代码规范及e2e测试 -> 正文阅读

[开发测试]社区的代码规范及e2e测试

golangci-lint

静态代码检查工具,是对golint、gofmt的集成,速度更快。

1、安装

go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.38.0

golangci-lint run [目录]/[文件]

最新的版本是1.42.0,社区使用的是1.38.0,总体来说是规则越来越严,我们和社区保持一致即可;

2、Linters

  1. deadcode,未使用函数和方法的检查;
  2. errcheck,未处理错误,例子+1;
  3. gosimple,简化代码;
  4. govet,锁拷贝检查、循环变量捕获问题、printf 参数不匹配;
  5. ineffassign,无效的资源申请,分配了内存但是没有使用,例子+1;
  6. staticcheck,ge vet的加强版,例子+1;
  7. structcheck,检查结构体中未使用的字段;
  8. typecheck,检查类型是否合理;

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/ginkgo

go 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{}) bool
    ShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool

    To(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
    ToNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
    NotTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
}

3、购物车的例子

4、addon的例子

PR前的准备

win10-1903、wsl2、ubuntu18.04、kind、docker desktop;

readme-generator生成测试覆盖率报告。

sign-off-by

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:56:38  更:2022-03-15 22:56:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:25:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码