Skip to content

MO-Tester 规范要求

编写测试用例规范 - case

规范 详情
文件命名
1. 以 .sql.test 作为后缀。

2. 文件名称有实际含义。例如,需要编写测试索引用例,可以将测试索引用例命名为 index.sql 或者index_xxxx.sql
测试用例
1. 测试用例,即 case 内的具体示例内容,所有的空行在测试时都自动忽略,你可以通过添加空行来使整个文件内容更易读。

2. 每条 SQL 语句只写一行,如果必须要多行书写,那么每行必须顶格书写,且 SQL 结尾不能有空格,否则将造成 case 文件 和 result 文件中 SQL 不能完全匹配。

3. 添加注释,注明当前所写测试用例的目的。

4. 为需要增加 Tag 标签测试用例添加 Tag。

测试用例注解说明 - Tag

注解 起始 结束 说明
-- @bvt:issue -- @bvt:issue#{issueNO.}] -- @bvt:issue 带有此注解标记的 SQL 将不会被执行
-- @sessio -- @session:id=X{ -- @session} 带有此主键标记的所有 SQL 将在 id=X 的新会话中执行
-- @separator / / 指定 SQL 语句在解析其 result 以及生成 result 文件的时候,使用的列分隔符,有两个取值
-- @separator:table / / 表示结果中列分隔符为制表符 \t
-- @separator:space / / 表示结果中列分隔符为 4 个空格
-- @sortkey -- @sortkey:1,2,3 / 表示该 SQL 语句的结果是有序的,排序键为第 1,2,3 列(从 0 开始);正常情况下,被测试系统返回的结果顺序是不固定的,所以工具在比对的时候,会把实际结果和预期结果都进行排序后比对,但是对于某些 SQL,其预期的结果就应该是有序的,比如存在 order by 的 SQL 语句,那么需要把类似这种 SQL 添加上这样的 Tag,工具在比对的时候,不会对 sortkey 中的这些列进行重新排序

编写测试结果规范 - result

规范 详情
普通测试用例生成测试结果
1. 如果新增了测试 case 文件,首先确保所有 SQL 都调试通过,使用 MO-Tester 工具自动生成测试结果。

2. 如果是在已有的 case 内新增一些 SQL,首先确保所有 SQL 都调试通过,使用 MO-Tester 工具自动生成测试结果。
含有 Tag 的测试用例生成测试结果
1. 如果新增测试 case 文件,且 case 文件内含有带 --bvt:issue 标签 SQL,使用 MO-Tester 工具自动生成测试结果,带 --bvt:issue 标签 SQL 在所生成的 result 文件中结果为 unknown result because it is related to issue#XXX"

2. 如果是已有测试 case 文件,已通过 MO-Tester 工具自动生成测试结果,再次使用 MO-Tester 工具自动生成测试结果时,带 --bvt:issue 标签 SQL 在所生成的 result 文件中结果将保留原有值,不再更新。
手动编写测试结果
1. 如果是手动编写 result,不可有空行,否则结果将产生解析错误。

2. 如果预期某条 SQL 的执行结果中,存在制表符或者超过连续的 4 个空格,则在测试 case 文件中对应的 SQL 语句,必须增加 Tag 标签 -- @separator:,否则将解析失败。例如,若 case 文件中对应的 SQL 语句含连续 4 个空格,则需要指定 Tag 标签 -- @separator:space;若含含有制表符,则指定 Tag 标签 -- @separator:table

在测试用例脚本中设置标记

有时,为了达到特定的目的,如暂停或创建新连接,您可以向脚本文件添加特殊的标记。Mo tester 提供以下标签供使用:

标签 说明
-- @skip:issue#{IssueNo.} 设置后,整个脚本文件将被跳过,并且不再执行 issue{IssueNo.}
-- @bvt:issue#{IssueNo.}
-- @bvt:issue
不执行 issue{IssueNo.} 这两个标记之间的 sql 语句。
-- @sleep:{time} mo-tester 将等待时长{time}
-- @session:id=2&user=root&password=111
-- @session
mo tester 将创建一个新的连接来执行这两个标记之间的 sql 语句。
id 默认值为 1,最大值为 10。
mo.yml 中配置了用户和密码的默认值。
-- @sortkey: 设置此标记,表示对结果进行排序。例如:
——@sortkey:0,1:表示排序键是第一列和第二列。