# richman-test **Repository Path**: dorence/richman-test ## Basic Information - **Project Name**: richman-test - **Description**: 2020软件工程课程项目-测试 - **Primary Language**: Python - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-04 - **Last Updated**: 2022-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # richman-test ## Preset 指令 无可变参数 1. `preset user %PlayerList%` 2. `preset map %MapId% %PlayerName% %Level%` 3. `preset fund %PlayerName% %Number%` 4. `preset credit %PlayerName% %Number%` 5. `preset gift %PlayerName% %Props% %Number%` 6. `preset %Props% %MapId%` 7. `preset userloc %PlayerName% %MapId% %RestDays%` 8. `preset nextuser %PlayerName%` ## autotest.py `python3 autotest.py [--dir dir_xxx] [...]` 使用 `--help` 查看所有支持的输入参数 ### 0 安装 使用 python3.6 即可,需安装的库详见 `requirements.txt`。 ### 1 配置 脚本以 `dir_xxx` 作为根目录,然后识别目录下是否有 `config.json` - 如果没有,则当作纯样例目录,自动查找 `.in` 和 `.out` 作为测试样例,且所有样例 level=0 - 如果有,则读取配置,json 的格式如下, key | value ---:| ----- name | 测试组名称,省略时即为文件夹名 maxlevel | 最大检测级别,默认为 1000 import | 数组,每个元素为需要递归的目录(会忽略非法目录) case | 数组,每个元素为二元组 (path, level),表示路径和对应的level json 中的 import 会作为新的根目录进行递归查找,直到收集到所有的测试样例。 ### 2 结果比对 脚本运行时,`.in` 重定向至 `stdin`,从 `stderr` 检测 `dump` 输出。 输出到 `stderr` 的 `C++/C` 代码如下: ```c++ // c++ #include std::cerr << "error" << 1 << std::endl; // c #include fprintf(stderr, "error %d\n", 1); ``` 脚本会从错误流中检测 `CAPTURE_CMD` 中指定的命令为开头的行,也就是说其它的错误提示只要避开 `CAPTURE_CMD` 中字段就会被忽略。 dump 与期望输出的比较规则:忽略大小写,两者各行内容对应相同但不论顺序,忽略空行和以 `#` 引导的注释内容。 ### 3 脚本配置 Key | Default value | Description ---- | ------------- | -------- CAPTURE_CMD | `list(...)` | 用于捕捉 `stderr` 输出的敏感命令表 CONFIG_JSON_NAME | `'config.json'` | 配置文件的文件名 DEFAULT_EXEC | `'../richman/richman'` | 执行的二进制文件,也可以执行时传入 `-n` 指定 EOL_SEQ | `'\n'` | EOL EXPIRE_TIME_MS | `5000` | 执行超时阈值(ms) REPORT_FILE_NAME | `report` | 报告输出为 `report.(csv|xlsx)`