自定义用例
终端云测-兼容测试 menu

自定义用例

更新于: 2022-04-01 17:13

简介

若您的脚本没有使用Pytest或Unittest功能测试框架编写用例,则需要在您的用例集脚本中内置case_config.json文件用于平台识别您的用例,并在runTest.sh中声明如何执行您的用例。

如何使用case_config.json描述您的用例

假设脚本中有2条用例"case1"和"case2",代码如下:

# -*- coding:utf-8 -*-
import sys
def case1(arg):
    print('case1 args' + arg)
def case2(arg):
    print('case2 args:' + arg)
if __name__ == '__main__':
    test_method = sys.argv[1]
    test_args = sys.argv[2]
    if test_method == "case1":
        case1(test_args)
    elif test_method == "case2":
        case1(test_args)
    else:
        print('invalid method')

执行命令分别为:

python3 main.py case1 "arg1"
python3 main.py case2 "arg2"

则case_config.json可描述为:

{
	"case_config": {
		"max_case_time": 1800, #用例默认执行超时时间(单位:s)
		"retry_times": 1, #用例默认执行失败后的重试次数
		"cases": [{
			"args": "arg1",
			"retry_times": 1,#本次用例执行失败后的重试次数
			"max_case_runtime": 1800,,#本次用例超时时间(单位:s)
			"case_name": "test_1",#用例名称,需保证全局唯一
			"file": "main.py",#用例执行文件位置(脚本根目录的相对路径)
			"func": "case1"#用例函数名
		}, {
			"args": "arg2",#用例参数
			"retry_times": 1,#本次用例执行失败后的重试次数
			"max_case_runtime": 1800,,#本次用例超时时间(单位:s)
			"case_name": "test_2",#用例名称,需保证全局唯一
			"file": "main.py",#用例执行文件位置(脚本根目录的相对路径)
			"func": "test_2"#用例函数名
		}]
	}
}

如何使用runTest.sh描述您的用例

平台在执行测试时,会将case_config.json内用例的描述内容通过环境变量下发给runTest.sh文件,其中

$CASE_NAME 对应 case_config.json中的case_name
$CASE_ARGS 对应 case_config.json中的args
$CASE_FILE 对应 case_config.json中的file
$CASE_FUNC 对应 case_config.json中的func

对应的runTest.sh文件可填写为:

#!/bin/bash
echo $CASE_NAME
python3 $CASE_FILE $CASE_FUNC  $CASE_ARGS

提测脚本生成

在您的用例集脚本中的根目录打包runTest.sh即可:
自定义用例.png

用例结果描述

在case目录生成caseresult.json,即可描述用例结果,例如可以在runTest.sh中生成caseresult.json,其中CASE_LOG_DIR是环境变量,代表用例结果存放目录:

echo "{\"errorno\":0}" > $CASE_LOG_DIR/caseresult.json 代表用例执行成功
echo "{\"errorno\":1}" > $CASE_LOG_DIR/caseresult.json 代表用例执行失败

您也可以在代码中生成caseresult.json,其中CASE_LOG_DIR是系统环境变量代表用例目录,caseresult.json中的内容为{“errorno”:0}表示用例成功,{“errorno”:1}表示用例失败。

购买
客服
反馈