记录 python+requests 不使用excel文件,代码拼接

描述了一个开发者在接口测试中遇到Content-Type问题的过程,通过调整header和参数格式,最终找到并修复了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考其他的文章,发现有的时候,接口测试时,并不想用到excel,因为做了部分的调整
封装的对象方法

def login_getRow():
    object = {}
    object["method"] = "post/get"
    object["host"] = "xxxxx"
    object["path"] = "/xxx/xxxx/xxx"
    object["url"] = object["host"] + object["path"]
    object["params"] = None
    # object["header"] = "{\"Accept\":\"*/*\"}" 改为
    header={'content-type':'application/json'}
	object["header"] = header
    object["code"] = "判断的字段"
    object["expected_code"] = int(0)
    if object["header"] == "":
        object["header"] = None
    log.info("***************:{}".format(object))
    return object

调用的request,请求方法

def test_request(object):
    result = None
    try:
        log.info("***************test_request开始")
        if object["method"] == "post":
            response = requests.post(object["url"], data=json.loads(object["params"]), headers=object["header"])
            result = response.json()
        elif object["method"] == "get":
            response = requests.get(object["url"], object["params"], headers=object["header"])
            result = response.json()
        else:
            log.info("Unknown method " + object["method"])
        log.info("***************test_request结束")
    except requests.exceptions.ConnectTimeout as e:
        result = {object["code"]: "timeout"}
    return result

然后发现不停的出现各种报错,什么
异常1:Content type ‘application/octet-stream’ not supported"
异常2:Content type ‘application/octet-stream‘ not supported
异常3:Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“
异常4:TypeError: the JSON object must be str, bytes or bytearray, not ‘dict’
异常5:AttributeError: ‘str’ object has no attribute ‘items’

后来就进行了header跟params的字段的不停格式尝试
后面给header字段赋值

header={'content-type':'application/json'}
object["header"] = header

参数赋值

data = {"name": "xxxxx"}
# object["params"] = data 不做转化会报异常4
object["params"] = json.dumps(data)

再后面就是4,5时不时出现,然后去看了下requests.post的方法,发现有两种使用参数,data跟json
然后看过了swagger,也没看出具体那个,然后就尝试下把requests.post的参数,data改为json

response = requests.post(object["url"], json=json.loads(object["params"]), headers=object["header"])

接口请求就成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值