上传自定义测试用例指引
上传自定义测试用例指引
测试用例上传到平台后,平台会将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"这层目录进行压缩!!!
本地调试
出现问题时可以 [下载脚本](data:application/zip;base64,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) 来辅助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分析成功
常见错误如下:
- ValueError: source code string cannot contain null bytes 请确保文件是UTF-8编码
用例需要额外第三方库文件
目前云测服务已经安装了常用的第三方库,如dateutil
xlwt
xlrd
pandas
nose
pandas
,但是无法覆盖所有的第三方库,如果用例解析出现了 ModuleNotFoundError, ImportError
类似的错误,一般是用例使用的第三方库文件,这时需要将第三方库也上传过来。
特别注意,强烈建议在Linux
或Mac
环境下安装。因为云测服务和真机跑测处于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
- 一些特别复杂的库文件还需要安装二进制文件才能使用,云测无法支持
- 再次提醒,尽量在
linux
或Mac
环境下安装包体,调试脚本。这样和云测环境保持一致,避免window环境出现安装包环境或字符编码错误
如果还出现错误,请加入云测服务官方企微群,联系MiniTest小助手反馈