用python做http协议的api自动化测试一

来源:互联网 发布:ubuntu修改命令提示符 编辑:程序博客网 时间:2024/05/20 01:36

从开始对测试的毫无知觉到现在喜欢上这个职业我用了两年的时间,也算是入了测试的门。最钟爱的也就是接口的测试。也自己搞了一套接口的自动化,马马虎虎也能用。写在这楼里记录一下,当作说明文档,不介绍报告生成和测试数据处理。

用例格式

version: 2.3.2author: firelncreatetime: 2017-01-12setting:    constenthost: &chost        host:  http://    doctorhost: &dhost        host:  http://caseinfo:    -        caseid: 1        casename:         <<: *chost  //对host的引用        api: /api/Assessment  //host后跟的路由        method: post  //接口请求类型        parames: {                    "Parames": [                        {                            "UserId": 187,                            "AssessmentId": 2,                            "AssessmentKind": 2,                            "AssessmentName": "量表名称",                            "AssessmentUrl": "www.量表Url.com",                            "Mode": 1                        }                    ], //传入接口固定参数                      "Type": "body", //参数传入类型                      "changeact": "False", //是否有要做修饰的参数                      "changeactkey": "False", //要做修饰的参数的key                      "fixedact":  "False", //是否要用到上个接口返回的数据                      "fixedactkey": "False", //上个接口返回数据的key                      "RandomNum": "False" //具有唯一性的参数                  }        checkdata: {            "checktype": "code",//结果检查类型            "checkdata": //预期结果        }        ResponseSaveType: 0 //结果保存类型

用力的样子已经知道了,那么怎么把它拿出来呢?接下来介绍怎么获取用例。
1.安装第三方库PyYAML
直接pip装就可以了,建议用豆瓣镜像来装包,速度很理想例如PyYAML
pip install PyYAML -i https://pypi.douban.com/simple/
2.编写代码拿出用例

# -*- coding: utf-8 -*-__author__ = 'Fireln'"""    @auther : Fireln    @time : """import osimport yamlclass GetCase:    def __init__(self,casefilepath):        self.casefilepath = casefilepath    @property    def openfile(self):        """        :return:用例配置文件        """        try:            casefile = open(self.casefilepath,encoding='utf-8')            return casefile        except Exception as e:            print(__file__,"openfile函数出错",e)    @property    def getcaseinfo(self):        """        :return:用例信息        """        file = self.openfile        setting = yaml.load(file)        caseinfo = setting['caseinfo']        file.close()        return caseinfo    def getlen(self):        """        :return:用例条目        """        caseinfo = self.getcaseinfo        length = len(caseinfo)        return length    def getcase(self,i,function):        """        获取用例底层方法        :param i:        :param function:子类处理用例的方法        :return:        """        caseinfo = self.getcaseinfo        case = caseinfo[i]        caseid = case['caseid']        casename = case['casename']        host = case['host']        api = case['api']        method = case['method']        parames = case['parames']        checkdata = case['checkdata']        ResponseSaveType = case['ResponseSaveType']        parame = function(parames) #使用处理函数处理参数,这个不用在意,是参数的处理方法,上面的用例也有讲到有些参数是需要处理的。下一篇会讲到        #print(caseid,casename,host,api,method,parames,checkdata,ResponseSaveType)        return caseid,casename,host,api,method,parame,checkdata,ResponseSaveTypeif __name__ == '__main__':    o = GetCase()    for i in range(6):        o.getcase(i)

这样就把用例拿出来了,下一篇介绍参数处理

0 0
原创粉丝点击