欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学API接口测试,致富植发(二)用Python发请求

程序员文章站 2024-03-22 09:37:04
...

通过python发送HTTP请求

此时,客户端不是浏览器,而是我们编写的脚本。

 

一、知识点

1、requests是python的第三方模块,pip3 install requests。

2、requests也是python的HTTP客户端库,代码主要调用requests提供的api来发送HTTP请求。

3、常用api:

request.put(url,params,proxies)

request.post()

request.delete()

 

二、代码

请求静态文件

import requests

if __name__ == '__main__':
    #提交一个GET类型的HTTP请求,返回一个响应对象
    resp=requests.get('http://127.0.0.1:80/test.html')

    # 状态行的状态码
    print(resp.status_code)
    # 状态行的状态码说明
    print(resp.reason)
    # 响应头
    print(resp.headers)
    # 打印出来发现不是字典类型,但是类似字典。
    print(type(resp.headers))
    # 字典的键区别大小写,这里的不区分。
    print(resp.headers['content_type'])
    print(resp.headers['Content_Type'])
    # 如果body是文本格式,用text。同时为了防止乱码,设字符集utf-8。
    resp.encoding = 'utf-8'
    print(resp.text)
    # 如果body是二进制格式(非文本格式,如图片),用content。
    # print(resp.content)

 

请求动态页面

json:https://blog.csdn.net/maoxuexue/article/details/105972276

在聚合https://www.juhe.cn/找个API测试一下,根据格式写个URL,?后编个key。例如:

学API接口测试,致富植发(二)用Python发请求

import requests

if __name__ == '__main__':

    resp=requests.get('http://apis.juhe.cn/cook/category?key=1234')

    print(resp.status_code)
    print(resp.reason)
    print(resp.headers)
    print(resp.text)


200
OK
{'Date': 'Thu, 07 May 2020 11:18:06 GMT', 'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': 'aliyungf_tc=AQAAANxxb0SlgQ0A4+5ZcVujkk43CASB; Path=/; HttpOnly', 'Etag': 'aac7930e0d20f08eefe02f6d5dd045fe'}
{"resultcode":"101","reason":"错误的请求KEY","result":null,"error_code":10001}

根据响应body做个小的接口测试。

import unittest
import requests
import json

class api_test(unittest.TestCase):
    '''分类标签列表接口测试用例'''

    def test_api_key(self):
        '''测试接口key'''
        #获取响应报文对象
        #     #写法1
        # resp=requests.get('http://apis.juhe.cn/cook/category?key1=1234&key2=2345')
        #     #写法2(最全)
        url = 'http://apis.juhe.cn/cook/index'
        # params参数用于设置query string 查询字符串
        param = {'key1': '1234','key2':'2345'}
        # proxies参数用于设置代理服务器,设置了才能被fiddler抓包
        resp = requests.get(url=url, params=param, proxies={'http': 'http://127.0.0.1:8888'})

        #断言状态码
        self.assertEqual(200,resp.status_code)
        #将json字符串转换成python对象(字典),有两种方法
        #     #方法1
        # o=json.loads(resp.text)
        #     #方法2
        o=resp.json()
        resultcode=o.get('resultcode')
        reason=o.get('reason')
        #断言body
        self.assertEqual('101',resultcode,msg="实际resultcode不等于预期resultcode")
        self.assertEqual('错误的请求KEY', reason, msg='实际reason不等于预期')

用fiddler抓下包。

学API接口测试,致富植发(二)用Python发请求

 

相关标签: python http