接口自动化测试(2)-封装方法

学习了一段时间接口自动化,总算有点新的认识,但是学到的没能全理解,只能先把代码摆这。(不知道这个标题这么写是不是合适。)

之前自动化只认识unittest框架,最后生成一个html的测试报告。虽然也强行做到了类似于参数化的效果,从excel读取数据,但是感觉很不方便,生成的报告不符合心愿。现在课程已经学了一半,已经做到了从excel读数据,最后生成excel的测试报告的效果。(感觉还是jmeter方便,省得写那么多代码,excel测试数据准备方面一样麻烦,只是jmeter不能生成excel报告。)

首先这里出现一个新包:urllib3,下面是百度到的一段,没太理解怎么回事,在接口自动化这里,好像是做https协议的接口测试时候,免去工作台中输出警告。

Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库。许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库urllib里所没有的重要特性:

  1. 线程安全
  2. 连接池
  3. 客户端SSL/TLS验证
  4. 文件分部编码上传
  5. 协助处理重复请求和HTTP重定位
  6. 支持压缩编码
  7. 支持HTTP和SOCKS代理

pip install urllib3就可以安装,具体不详细介绍了。

下面说一下封装的东西。

接口测试一般需要url,参数,可能有的要请求头,之后返回请求结果。还要有断言判断是不是想要的返回结果。这些都可以封装起来,提供后面使用。先上代码。

这个python文档命名TestRequest.py,后面再写的时候附带的代码会调用这个模块,所以会出现这个名字。

import json
import requests
import urllib3
urllib3.disable_warnings()
requests.packages.urllib3.disable_warnings()
#添加一个数组,用来装测试结果
hlist=[]
#公共的头文件设置
header={
    'content-type': "application/json;charset=UTF-8"
    }

def TestPostRequest(hurl,hdata,headers,htestcaseid,htestcasename,htesthope,fanhuitesthope):
    hr=requests.post(hurl,data=hdata,headers=headers)
    hresult=json.loads(hr.text)
    hstatus=hresult['status']
    if hstatus==htesthope and fanhuitesthope in str(hresult):
        hhhdata={'t_id':htestcaseid,
                 't_name':htestcasename,
                 't_method':'POST',
                 't_url':hurl,
                 't_param':'测试数据:'+str(hdata),
                 't_hope':'status:'+htesthope+',期望结果:'+fanhuitesthope,
                 't_actual': 'status:' + hstatus + ',实际返回结果:' + str(hresult),
                 't_result':'通过'
                 }
        hlist.append(hhhdata)
    else:
        hhhdata = {'t_id': htestcaseid,
                    't_name': htestcasename,
                    't_method': 'POST',
                    't_url': hurl,
                    't_param': '测试数据:' + str(hdata),
                    't_hope': 'status:' + htesthope + ',期望结果:' + fanhuitesthope,
                    't_actual': 'status:' + hstatus + ',实际返回结果:' + str(hresult),
                    't_result': '失败'
                    }
        hlist.append(hhhdata)
    print(hlist)
def TestGetRequest(hurl,hdata,headers,htestcaseid,htestcasename,htesthope,fanhuitesthope):
    if hdata=='':
        hr=requests.get(hurl,headers=headers)
    else:
        hr=requests.get(hurl,params=hdata,headers=headers)
    hresult=json.loads(hr.text)
    hstatus=hresult['status']
    if hstatus==htesthope and fanhuitesthope in str(hresult):
        hhhdata={'t_id':htestcaseid,
                 't_name':htestcasename,
                 't_method':'GET',
                 't_url':hurl,
                 't_param':'测试数据:'+str(hdata),
                 't_hope':'status:'+htesthope+'期望结果:'+fanhuitesthope,
                 't_actual': 'status:' + hstatus + '实际返回结果:' + str(hresult),
                 't_result':'通过'
                 }
        hlist.append(hhhdata)
    else:
        hhhdata = {'t_id': htestcaseid,
                    't_name': htestcasename,
                    't_method': 'GET',
                    't_url': hurl,
                    't_param': '测试数据:' + str(hdata),
                    't_hope': 'status:' + htesthope + '期望结果:' + fanhuitesthope,
                    't_actual': 'status:' + hstatus + '实际返回结果:' + str(hresult),
                    't_result': '失败'
                    }
        hlist.append(hhhdata)
    print(hlist)

这里封装了两个,get请求和post请求,我觉得这俩都差不多,好像post也能办了get的事,别处调用的时候,写清具体调用哪个就可以了,如果还要delete请求或者别的,就在这个模块继续加,我只接触过这两个请求。

代码中黄色字部分,是别处调用时候传的值。分别是url,参数,请求头,用例id,用例名称,期望返回状态码,期望返回结果。根据自己情况可以添加或删除部分值,比如不要用例id。

hresult=json.loads(hr.text)这意思是把返回结果的json格式转换为字典格式。下面从返回结果取出返回状态吗。

if和else分支,这相当于断言,判断返回状态码和期望返回状态吗是否相等,期望返回结果是不是返回结果的一部分。

hhhdata里面的东西都是打印出来的,想要打印什么样子也可以自己定,比如蓝色get和post那,那一行都没什么实际用途。

最后把hhhdata写进hlist列表里,输出hlist列表内容。

封装到这就结束了,本来想写一个测试这封装的脚本,暂时没合适的接口,就先写到这里。

如果传参是json格式的,也可以再封装一个先把参数转换的方法,免去以后别处调用的时候,调用那里再转换了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
接口自动化测试封装可以使用pytest框架进行极限封装。根据引用\[1\]和引用\[2\]的内容,可以将每个接口的正向校验和异常校验封装成不同的方法,并封装在同一个测试类中。例如,可以定义一个登录的测试类,其中包含正确用户名和密码请求的方法作为一条测试用例,以及正确用户名和错误密码请求的方法作为另一条测试用例。这样可以更好地组织和管理测试用例。同时,根据引用\[3\]的内容,还需要将代码封装成pytest能识别的测试函数或测试类,并添加断言来判断执行结果是否通过。这样才能使测试框架正确执行和判定测试结果。因此,接口自动化测试的pytest极限封装包括将每个接口的测试用例封装成不同的方法和测试类,并使用pytest框架进行识别和断言。 #### 引用[.reference_title] - *1* *3* [python+pytest接口自动化之测试函数、测试类/测试方法封装](https://blog.csdn.net/ifling99/article/details/125322607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [python+pytest接口自动化 —— 测试函数、测试类/测试方法封装](https://blog.csdn.net/myh919/article/details/129044197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值