Unittest框架的基本结构如图:
代码设计思路重点讲解:
1、通过读取Excel文档中的内容,来实现参数的存储。通过配置文件,可以方便修改对应的内容。
2、把接口的参数存在Excel中,通过json.loads将参数变为json格式,其余公共参数可通过values.update()来加入。
3、对于我们常用的token参数,通过传入uid,在通过数据库查询,进行替换参数。
4、对于返回值的校验,通过写在Excel对应行的结果上,因为主要用来回归下接口是否正常访问,故代码只做了code校验
然这样设计之后,我们可以通Excel添加对应接口,参数和结果,如图:
而测试结果如图显示:
遇到问题记录如下:
问题:ImportError: No module named flask 解决办法:
1、Python3可以在命令提示符中输入:pip3 install flask
2、Python2直接输入:pip install flask
问题:ImportError: No module named 'xlrd' 解决办法:
1、Python3可以在命令提示符中输入:pip3 install xlrd
2、Python2直接输入:pip install xlrd
问题:ImportError: No module named requests 解决办法:
1、Python3可以在命令提示符中输入:pip3 install requests
2、Python2直接输入:pip install requests
问题:common中的xx.py调用文件夹外面的xx.py文件,解决方法:
import sys
sys.path.append('..')
--------------这段代码放在import xx.py之前--------------
问题:在打印log的时候会提示错误:UnicodeDecodeError:
'ascii' codec can't decode byte 0xe2 in position 30,解决方法:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
--------------这段代码放在logging的头部--------------
问题:在执行脚本的时候提示错误:'testUserLogin' object has
no attribute 'case_name':
原因是在 HTMLTestRunner.HTMLTestRunner中运行时description = cls_results[0][1]中多了.case_name,只要删掉就好了
问题:在执行脚本的时候提示错误:TypeError: unicode argument
expected, got 'str':
解决方法:HTMLTestRunner中将对应的2.7版本改成from io import BytesIO,然后把下方的self.outputBuffer = io.BytesIO()
问题:在执行脚本的时候提示错误:ImportError: No modulenamed parse
python 2.7版本需要用urlparse代替parse。故脚本修改如下
data1 = dict(urlparse.parse_qs(urlparse.urlparse(new_url).query))
问题:在执行脚本的时候提示错误:ImportError: No modulenamed paramunittest
1、Python3可以在命令提示符中输入:pip3 install paramunittest
2、Python2直接输入:pip install paramunittest
在45机子上jenkins配置对应的执行内容
一、45机子上需要配置tomcat服务
二、安装工程所用到的对应python插件
三、上传对应的工程,并且在jenkins中配置对应工程
四、找到tomcat中/conf/server.xml文档,在最好一行插入对应访问地址的对应路径配置。如:
则页面访问路径如:(用于查看对应接口报告)
五、启动tomcat,使链接可以访问
代码路径:https://github.com/lunacai/MyUnittest/tree/master/chushouInterTest