# 上传自定义测试用例指引

测试用例上传到平台后,平台会将zip包进行解压,然后利用Python内置的inspect模块分析出test打头的测试函数名称。

在inspect过程中,会把每个Python文件执行一遍,可能会出现因为case目录结构不合理导致的分析失败。

# 推荐目录结构

推荐两种用例目录组织结构:

___my_case
   |___test_a.py  // from util.base import xxxx
   |___test_b.py  // from util.base import xxxx
   |___util
       |___ __init__.py
       |___base.py

选择test_a.py、test_b.py和util目录一起打包压缩成case.zip

___my_case
   |___test_pack
        |___ __init__.py   // 注意这里,加上__init__.py使整个test_pack成为一个包
        |___test_a.py      // from test_pack.util.base import xxxx
        |___test_b.py      // from test_pack.util.base import xxxx
        |___util
           |___ __init__.py
           |___base.py

选择test_pack目录压缩成case.zip

注意:以上两种方式中,不要直接选中"my_case"这层目录进行压缩!!!

# 本地调试

出现问题时可以 下载脚本 来辅助debug

cd ${your_path}/local_script

python3 debug_analyse.py -d ${your_case_path}

参考示例:

cd /leviwu/test/local_script
python3 debug_analyse.py -d /leviwu/minitest-case/user_case/my_case

如果控制台有标准输出,说明case分析成功

常见错误如下:

  1. ValueError: source code string cannot contain null bytes 请确保文件是UTF-8编码

# 用例需要额外第三方库文件

目前云测服务已经安装了常用的第三方库,如dateutil xlwt xlrd pandas nose pandas,但是无法覆盖所有的第三方库,如果用例解析出现了 ModuleNotFoundError, ImportError 类似的错误,一般是用例使用的第三方库文件,这时需要将第三方库也上传过来。

特别注意,强烈建议在LinuxMac环境下安装。因为云测服务和真机跑测处于Linux环境,很多第三方库如果对不同的平台(Win、Mac、Linux)有不同的版本,此时在Windows下安装的包体,上传到Linux下无法解析。

下面以 faker(注:faker库云测已安装,此处只是用来举例)库为例,在云测使用具体步骤如下:

# 1、将第三方库安装在minitest_lib文件夹下面

pip支持可以将库安装在指定的文件夹下面,在云测中,统一都放在 minitest_lib 文件夹下。请注意,云测服务只识别minitest_lib文件夹,其他文件夹不识别!

以faker为例,在case的目录下执行安装,参考命令如下:

 # 注意只需要将faker替换成你需要的库,其他参数保留
 pip3 install faker -t minitest_lib -I --no-deps
 
 # 参数解释:
 # -t: 指定路径,此处必须为 minitest_lib
 # --no-deps: 不安装库的依赖包

# 2、使用debug_analyse.py调试

安装完库文件后,用本地调试中的debug_analyse.py脚本调试case。常见的错误情况如下:

  • 如果还有ModuleNotFoundError等错误,说明还有其他的依赖库文件没有安装,需要继续安装对应的库文件
  • 在测试用例的代码中,如果要引用第三方库文件,直接引用就好了,如 import faker,不需要 from minitest_lib import faker

# 3、上传到云测,再次调试

本地调试成功后,将用例上传到云测服务即可,此时如果还有报错,请检查:

  • 有些库可能本地python3环境已经安装了,这时候在debug_analyse.py中也会执行成功,但是上传云测报错。例如本地已经安装dateutil,云测没有安装,上传时会继续报错 ModuleNotFoundError: No module named 'dateutil',此时需要将datetutil也安装即可,如执行 pip3 install python-dateutil -t minitest_lib --no-deps -I
  • 一些特别复杂的库文件还需要安装二进制文件才能使用,云测无法支持
  • 再次提醒,尽量在linuxMac环境下安装包体,调试脚本。这样和云测环境保持一致,避免window环境出现安装包环境或字符编码错误

如果还出现错误,请加入云测服务官方企微群,联系MiniTest小助手反馈

# 需要帮助