# 测试用例检视规范

# 1      检视前提

必须有用例执行结果截图；

用例文件必须格式化；

每个用例中的测试命令控制在10个左右；

用例文件命名规范：

命名方式为：oe_test_包名.sh、oe_test_包名_序号.sh、oe_test_包名_命令.sh（用于同一个命令中参数比较多的场景）

用例拆分规范：

同一个命令中的参数超过10个以上，需要对用例进行拆分，命名方式为：oe_test_包名_命令1_序号.sh 

用例合并规范（非必须）：

软件包中有多个命令，并且所有命令行参数少于10个，命名方式可以为：oe_test_包名.sh、oe_test_包名_序号.sh 

oe_test_包名软件包中有多个命令参数均小于3个，建议合并至一个用例中（用例描述中说明测试了哪些命令）

名词解释：

包名：当前测试软件包名 命令：rpm -ql 包名 | grep bin 序号：01，02 ...同理

**针对同一个软件包不同版本命令参数有差异的用例结构及命名规范：**

用例目录结构

testcases/cli-test/源码包名

用例名称

oe_test_rpm包名_base_命令（基线用例，多个软件包版本共同使用的用例）

oe_test_rpm包名_version1_命令

oe_test_rpm包名_version2_命令


测试套

suite2cases/源码包名_version1.json

oe_test_rpm包名_base_命令

oe_test_rpm包名_version1_命令


suite2cases/源码包名_version2.json

oe_test_rpm包名_base_命令

oe_test_rpm包名_version2_命令

# 2      检视规范

## 2.1      注释

代码中所有注释必须为英文描述；

## 2.2      命令和参数

测试软件包中的命令和参数要全部覆盖；

## 2.3      临时文件

临时文件放在/tmp目录下，或者在当前路径下创建临时目录（临时文件比较多的情况），post_test中需要清理；

## 2.4      其他

文件起始位置注释信息中年份必须为当前年份；

每个用例必须独立（每个用例执行互不依赖、互不影响）；

config_test只放置预加载数据参数配置等操作代码,pre_test中只放置预置处理代码，run_test只放置测试代码，post_test只放置环境清理代码（必须清理完全，恢复初始使用环境），里面不能出现python xx的执行命令；

pre_test和post_test不能有CHECK_RESULT方法；

能归并在一起的语句，全部归并在一起。例如，多个rm命令，可以归并一个；

userdel删除用户，需要加-rf参数,连同用户目录一起删除；

代码中尽量使用框架提供的公共变量（参考conf/mugen.env）和公共方法，如NODE1_XX系列；

不要定义从不使用的变量，不要写无意义的代码；

DNF_INSTALL方法可同时安装多个包，安装多个包的调用方式为：DNF_INSTALL "xx1 xx2"；

DNF_REMOVE与DNF_INSTALL配合同时使用时，DNF_REMOVE可以省略参数；

config_test，pre_test,post_test如无必要，不能在用例代码中出现；

mv命令必须加上-rf,防止目的文件存在时，命令有提示操作；

测试点必须加CHECK_RESULT，CHECK_ RESULT必须包含4个参数，日志信息必须正常易理解；

不能出现重复代码，尽量使用相对路径，不能出现语句逻辑性错误；

cp命令必须加上-f,防止目的文件存在时，命令有提示操作；

用例中用到的除用例以外的文件需要放在当前路径的common目录下，如果文件数量超过20个建议打包上传；

用例描述以及注释必须都是英文的；

每个命令参数都需对执行结果进行校验，参数不同校验结果也应有所不同；

格式化问题：用例中函数体内容缩进４个空格；命令参数、特殊符号前后一个空格；

判断文件是否存在建议使用test -f file；

在文件中查找关键词用grep xxx file；

获取当前路径：xxx=$(cd "$(dirname $0)" || exit 1
pwd)

查看命令的标准错误输出使用cmd 2>&1 | grep xxx；

**根据pr的检视意见修改之后必须进行回复，无需修改也请给出理由，修改完之后需要上传用例执行成功结果截图（整个测试套跑成功）**；
