上传自定义测试用例指引

上传自定义测试用例指引

测试用例上传到平台后,平台会将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,UEsDBBQACAAIALeNbVYAAAAAAAAAAJMUAAAQACAAZGVidWdfYW5hbHlzZS5weVVUDQAHyvAOZKAZGGSfGRhkdXgLAAEE9QEAAAQUAAAArVhbb9RGFH7fX+EuldamG4ekF8FKW8FDkXgAIRX1JYqsWXuSHeIb4zHJCiERtQUiKEK0oApoVUqBllLSqiqFUMqfyW42/6JnLrbHdjalUVdR7Dlz5jvXOXPG+96aThM63SPhNA7PGvGA9aOwsc+Y2j9luJFHwsVOyhamDnICkA97OHEpiRmJwg4foxQW0I7h47NkOT3McOjikNluFAhuxHDHmD0wOzt9cPp9Y+aDzsws0Edrj8b3rg4vXxx9ez1NMHVclODptxdplMYO8aZHaxdGd9e2bn9mx4MGCeKIMgPRxRjRBGdj+fBJz04Z8XNqmMTYZdnwdALGqPcoyd5oDpIMciKjyMU95C41FmgUGHFMSZhJUaNGg+vpBBhM9hyKja4x12I4YftbbUO8OPtb840GXnH91MOOR2gieAISEjEN6nJWx4kHLnL72HE4f8PDCwYKkT8AdCECVpo0ipgTI9bvGAmjVqdhwK/ZbIrn9oUbw1c3tle/GF67yFds3Xk6fHVzuP7ipAjg6NalzZfPxq/vgJs3X97f+m5VOlus7YAfUWAU+JJKMUtpWBZDFoww4q6zOaONV0jCkkIzpRT/ydViKP4h33eEyVw74YX5YhJgcwwhgIQ8FHahDf9lFBuCiikzD7SLVVYBts/Y+urHzY1rx8HJp0AipM3Wkyebz9dGt14MN74UPKxPqMe9L0V2c4tORyQs7IHQlEJlZdpWHFCGsyB2XlXEf7GqApezipeFiAqz2wZPp7axQHwcogB8CvCg1zLyl3QLWBR70XLYPUVTrMWHw2RL+cocpmDRAp7N2jj0kmXC+mYLtmLLKjPznxuFjIQpbpRm+PqJri5ssEqLSoNS7mR7Ix4Ikm5uLmkXLDCqgKubUE5ViDEUMc8sKJa07SzyCa9nThB5KQiVpUHXpQyklsnSYVbn+JTcM5VllXJQM1lUg7ahlJhUH+R231p7MXx6O9ZKwm4FQFJ14MmFgaeTVuZ4RulVr3Ay+L7CVxOQ/ZQ7VKHIo6j4KfarGQUk/jQ1xFqJUHMi7btG027KPKyAAlTsQ/03M+gEx23ObdlJ7BNm8te5ztTMvESdWNkAFygyNVSimJoKpbipBAEKHClBD4vD4tz53L9AVGtwEPVOc9+p481exEwt4ehWyd0ZD0lcHyXAIFbLIkWSJO3p5LYB/4C7srM1neaUGvOgnFzT2E1DbaUNhTRITA26jxInUwDgjiIfzvNskgNGrA/dgMSU728CqwzXFiRKozetV9xthWtyoMywHepexRRebWs8PYrRUkOPDa+t+soyrjj6fThhABAiLIuC7DaKeGnZZFVtyAHq+moZ+063YGzohahWhHbJ47zudk9EYXbQlDebNrKhQpHYlApDbxgn1fl8l2VHLpwQpuC0jA+NmcKgsgzBMQf7UszzxM+3X9Ya2pzq8KbOEUr7kYt4+zrBHqu2j3MgtUBAcVCT/7NyybYfIQ9TOEBAXuGzUq2HsfJtLcC59x2RGuVIdxSIqjfSj5wtcwTAIcZoHQWaTc4CnaaV71tpMhxoKZ5QVSow5QoTIOb25bEklBOlxYVjDPXA5ImaCN76toX9IPiFOkJfuHcIfQVufTozZ8L0mRT5GUt9H6jmnTORBYK9zH9iva2v3qF0eEVu7wSjsrhlt6w8JSvG8gKgNgSiTLZWOe4O6lbl8seOTDUi3LK+Xh9ef7j5fGP85+/j15egLx798mD78Q876VV3Ywp9sAhhskTi3N2ZmyqzkxRXtfaNFIbktlEc897rXJPb2eyoRG3mHgBS/g70eGkRKKV93Cx2BWfOB+dL25DmJa6ay52ivYELmiM6lvKtr7QVKLYFgim520pjIB+zduxu8oNCjeUZKHX59w5T6yAr98HHV8frqzLi+e159MeV8fpNCbb96asx/H3/M7/gpMH2vY3h5Z+G638NP3+wc08oblV/X4nhRowWMb9UXX4mb5k6v9ZXG+NH96HnHF7aGH3zAPg51Zg71+IeaXWMFr/45sHLCBBB8Xp+vm3A+/DX38CG7bsXxg9XpXIAJA2Y3Ivy/lny8OqYYGbOcdlzAnxexFLoQvQTbl51X//HVbToh+DUIKGuUAEBTUtcOlJqhysANUCdrMAZ3S7fhwEiIWw/CSS+gFB+I1JfQ+wjdDENcMhOihlT+zzTbX0EB1HKsLReXShsdQxIJBt5noMUhNma8nhMpqagU4fzIKKDFk/lMykMPXGhhAwcxLgrbiB96L67LfHNRkrgHjHypQb3jRIGEnholEzx4FKhiZO+Y3RQOKr2IYRz2jmuRIQ7BY6ZYR6FY/tExI5Gaeh9RGkEeh0XDq0Qjwlni4G2L+XVLP/yY4uxA9imVfRWcOdn5kxZ7Ce8DCroU+AR9XoESijpgcszqaGHV/YudLYs9ONByNCKBg1DHui9C3i3JOAkpgF0wRniXgDf0wH3AnDokNX4B1BLBwi2m/TUMAcAAJMUAABQSwMEFAAIAAgAt41tVgAAAAAAAAAA2gAAABsAIABfX01BQ09TWC8uX2RlYnVnX2FuYWx5c2UucHlVVA0AB8rwDmSgGRhkohkYZHV4CwABBPUBAAAEFAAAAGNgFWNnYGJg8E1MVvAPVohQgAKQGAMnEBsB8QogBvFvMRAFHENCgqBMkI4ZQOyEpoQRIS6anJ+rl1hQkJOqV1iaWJSYV5KZl8pQqG9gYGFkbWaUZpKYnGhsHVORahJTkZQcU2FhCGVbxFRYJgLZpkB2akxFYipUPA3INrRmAABQSwcINQwL5n8AAADaAAAAUEsBAhQDFAAIAAgAt41tVrab9NQwBwAAkxQAABAAIAAAAAAAAAAAAKSBAAAAAGRlYnVnX2FuYWx5c2UucHlVVA0AB8rwDmSgGRhknxkYZHV4CwABBPUBAAAEFAAAAFBLAQIUAxQACAAIALeNbVY1DAvmfwAAANoAAAAbACAAAAAAAAAAAACkgY4HAABfX01BQ09TWC8uX2RlYnVnX2FuYWx5c2UucHlVVA0AB8rwDmSgGRhkohkYZHV4CwABBPUBAAAEFAAAAFBLBQYAAAAAAgACAMcAAAB2CAAAAAA=) 来辅助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小助手反馈

需要帮助

posted on 2025-01-17 08:46  AtlasLapetos  阅读(25)  评论(0)    收藏  举报