requests库读网页写的函数只能用一次怎么办第二次读怎么读都是fail,但新建一个项目同样的函数同样的网址再读取时就可以

1

img

img


如图
requests库读网页写的函数只能用一次怎么办第二次读怎么读都是fail,但新建一个项目同样的函数同样的网址再读取时就可以

文件读取是有指针的,第一次开始前在最开始,读完一次到最后了,再次使用需要把指针重置到开头,url.seek(0)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/161064
  • 除此之外, 这篇博客: 基于requests框架实现接口自动化测试项目实战中的 02 自动化requests模块的常用方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述

    2.1get请求实战

    !/usr/bin python3 # encoding: utf-8 -*- # @author: 沙陌 微信:Matongxue_2 # @Time:2021/3/25 9:54 # @Copyright:北京码同学网络科技有限公司

    import requests

    host=‘http://10.0.0.18:8080’

    def get():

    “”"

    get接口请求

    :return:

    “”"

    url =host+’/pinter/com/getSku’ #接口地址

    params={

    'id':1
    

    }

    resp = requests.get(url,params=params)

    status_code=resp.status_code #获取响应状态码

    print(‘响应状态码:{}’.format(status_code))

    text=resp.text #获取响应内容,结果类型是字符串

    print(‘响应内容:{}’.format(text))

    json=resp.json() #获取响应内容,结果是字典类型

    print(‘响应内容:{}’.format(json))

    resp_headers=resp.headers #获取响应headers

    print(‘响应header:{}’.format(resp_headers))

    if__name__==‘main’:

    get()

    结果如下

    D:\Python\Python36\python.exe D:/pycharmprojects/first/requetsstudy/pinter.py

    响应状态码:200

    响应内容:{“code”:“0”,“message”:“success”,“data”:{“skuId”:1,“skuName”:“ptest-1”,“price”:“645”,“stock”:709,“brand”:“testfan”}}

    <class’dict’>

    响应内容:{‘code’:‘0’,‘message’:‘success’,‘data’:{‘skuId’:1,‘skuName’:‘ptest-1’,‘price’:‘645’,‘stock’:709,‘brand’:‘testfan’}}

    响应header:{‘Content-Type’:‘application/json;charset=UTF-8’,‘Transfer-Encoding’:‘chunked’,‘Date’:‘Fri,12Mar202122:13:49GMT’,‘Keep-Alive’:

    ‘timeout=20’,‘Connection’:‘keep-alive’}

    Process finished with exit code 0

    上述代码中请求发起后得到一个响应对象变量resp,那么resp对象的常用方法如下
    在这里插入图片描述

    2.2post请求实战

    post请求的参数格式通常有多种,我们依次学习

    第一种表单形式的参数

    
    importrequests 
    
    host='http://10.0.0.18:8080'
    
    
    defpost():"""post表单:return:"""url=host+'/pinter/com/login'#表单参数data={
    
    'userName':'沙陌','password':'123456'}resp=requests.post(url=url,data=data)status_code=
    
    resp.status_code#获取响应状态码print('响应状态码:{}'.format(status_code))text=resp.text#获取响应内容,结果类型是字符串print('响应内容:{}'.format(text))json=resp.json()#获取响应内容,结果是字典类型print('响应内容:{}'.format(json))resp_headers=resp.headers#获取响应headers 
    
    print('响应header:{}'.format(resp_headers))```
    
    免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
    
    
    第二种json格式参数
    
    import requests
    
    
    host='http://10.0.0.18:8080'
    
    def post_json():
    
     """
    
    postjson
    
    :return:
    
    """
    
      url =host +'/pinter/com/register'
    
      #header里定义参数类型
    
      headers={
    
        'Content-Type':'application/json'
    
    }
    
      #json参数
    
      json={
    
        "userName":"沙陌",
    
        "password":"1234",
    
        "gender":1,
    
        "phoneNum":"110",
    
        "email":"beihe@163.com",
    
        "address":"Beijing"
    
    }
    
      resp=requests.post(url=url,json=json)
    
      status_code=resp.status_code #获取响应状态码
    
      print('响应状态码:{}'.format(status_code))
    
      text=resp.text #获取响应内容,结果类型是字符串
    
      print('响应内容:{}'.format(text))
    
      json=resp.json() #获取响应内容,结果是字典类型
    
      print('响应内容:{}'.format(json))
    
      resp_headers=resp.headers #获取响应headers
    
      print('响应header:{}'.format(resp_headers))
    
    2.3put接口实战
    
    import requests
    
    
    host='http://10.0.0.18:8080'
    
    def put():
    
     """
    
    put 清酒
    
    :return:
    
    """
    
      url = host+'/pinter/com/phone' #接口地址
    
      #参数
    
      json={
    
        "brand":"Huawei",
    
        "color":"yellow",
    
        "memorySize":"64G",
    
        "cpuCore":"8核",
    
        "price":"8848",
    
        "desc":"全新上市"
    
    }
    
      resp=requests.put(url=url,json=json)
    
      status_code=resp.status_code #获取响应状态码
    
      print('响应状态码:{}'.format(status_code))
    
      text=resp.text #获取响应内容,结果类型是字符串
    
      print('响应内容:{}'.format(text))
    
      json=resp.json() #获取响应内容,结果是字典类型
    
      print('响应内容:{}'.format(json))
    
      resp_headers=resp.headers #获取响应headers
    
      print('响应header:{}'.format(resp_headers))
    
    2.4delete请求
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/273f6203fbae4f1d81145443aaff1c80.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    
    
    2.5request.session.request用法
    
    可以自动管理cookie,比如如下需要采用cookie认证的接口
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/0935e09a91944a0e9db1129522ad17f9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/463c3e56d91c43f89f6281931ffec9e5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    
    
    结果如下:
    
    D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py 响应状态码:200 
    
    响应内容:{"code":"0","message":"success","data":"$22,378,198"}
    
    
    Process finished with exit code 0
    
    2.6token关联的接口如何做呢?
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/b0c3610841a74860804d33f7281cb0c3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    
    
    对于需要token关联的接口来说,需要从登录接口的返回值中提取token信息,并传递给需要token的接口
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/a5328e813bcd48d9bd264dea480fedfe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    
    
    结果如下:
    
    D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter1.py
    
    响应状态码:200 
    
    响应内容:{"code":"0","message":"success","data":"$74,780,457"}
    
    Process finished with exit code 0
    
    总结一下:
    
    requests库的请求方法里参数众多,所以简单划分一下,查询参数就用params=params 
    
    表单参数就用data=data 
    
    json参数就用json=json 
    
    请求头信息header就用headers=headers 
    
    
    笔者跟大家分享一个福利!扫码回复【csdn码哥群】入软件测试自学交流群,可免费听技术讲座+领学习资料+视频课免费看
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/a29037ebae324532bcfe606da5420e65.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAVGVzdGZhbl96aG91,size_20,color_FFFFFF,t_70,g_se,x_16)
    
    作者:码同学软件测试
    本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^