Requests传递 URL 参数:

你也许经常想为 URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如,http://www.bcbxhome.com/bcbxxy/search.php?key=val

Requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。举例来说,如果你想传递 key1=value1 和 key2=value2 到http://www.bcbxhome.com/bcbxxy/search.php,那么你可以使用如下代码:

  1. >>> payload = {'key1': 'value1', 'key2': 'value2'}
  2. >>> r = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)

复制代码

实战操作一下吧:

  1. >>>payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': '接口自动化'}
  2. >>>r = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)

复制代码

通过打印输出该 URL,你能看到 URL 已被正确编码:

  1. >>> print(r.url)
  2. http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96

复制代码

注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

  1. >>>payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': None}
  2. >>> r = requests.get('http://httpbin.org/get', params=payload)
  3. >>> print(r.url)
  4. http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes

复制代码
你还可以将一个列表作为值传入:

  1. >>> payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': ['接口','自动化']}
  2. >>> r = requests.get('http://httpbin.org/get', params=payload)
  3. >>> print(r.url)
  4. http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3&kw=%E8%87%AA%E5%8A%A8%E5%8C%96

复制代码

完整代码如下:

  1. import requests
  2. payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': '接口自动化'}
  3. result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)
  4. print(result.url)
  5. payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': None}
  6. result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)
  7. print(result.url)
  8. payload = {'mod': 'forum', 'searchid': '8', 'orderby': 'lastpost', 'ascdesc': 'desc', 'searchsubmit': 'yes', 'kw': ['接口','自动化']}
  9. result = requests.get(" http://www.bcbxhome.com/bcbxxy/search.php", params=payload)
  10. print(result.url)

复制代码

对应结果如下:

  1. http://www.bcbxhome.com/bcbxxy/search.php?mod=forum&searchid=8&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96
  2. http://www.bcbxhome.com/bcbxxy/s ... sc&searchsubmit=yes
  3. http://www.bcbxhome.com/bcbxxy/s ... A%E5%8A%A8%E5%8C%96

复制代码

有没有疑问为啥kw后面的汉字变成了%+英文+数字?

这个叫url编码,这里就不展开细讲了可以去这里尝试一下http://www.jsons.cn/urlencode/

php url传递参数_python+Requests接口自动化测试之传递 URL 参数相关推荐

  1. requests payload_python+Requests接口自动化测试之传递 URL 参数

    Requests传递 URL 参数: 你也许经常想为 URL 的查询字符串(query string)传递某种数据.如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的 ...

  2. python api开发用什么框架_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  3. python 自动化框架打包_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  4. pythonweb自动化项目源码下载_python+requests接口自动化完整项目设计源码

    一.项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou 2.在工程的跟目录新建一个脚本:run_main.py,用来执行全部用例 3.在工程下创建以下几个pak ...

  5. python接口自动化项目_Python+requests接口自动化完整项目框架整理笔记

    前言 通过学习"上海悠悠"博客,自己手动敲了一遍整体的自动化项目搭建,编写用例,打印log日志,生成测试报告,将报告发送至邮箱整体流程跑了一遍,勉强跑通了 一,项目结构 --cas ...

  6. python调用接口时传多个参数_python接口自动化11-post传data参数案例

    前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...

  7. python接口自动化pdf悠悠_python接口自动化13-data和json参数傻傻分不清【悠悠】

    https://www.cnblogs.com/yoyoketang/p/7231384.html 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参 ...

  8. 浅谈python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  9. python分析股票支撑压力_python+requests接口压力测试500次,查看响应时间的实例

    接口压力测试500次,查看响应时间 import json import requests import logging logging.basicConfig(level=logging.INFO, ...

最新文章

  1. 无法加载mspdb140.dll
  2. Centos7 fstab盘符挂载硬盘导致重启系统失败解决办法
  3. 忘记root密码如何处理
  4. docker操作运行一步一步来
  5. WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理【01】
  6. 工程打包是什么意思_太生动形象了!500个建筑施工3D动画演示,施工工艺一目了然,零基础工程人也能看懂...
  7. 用python模拟评委打分_用vb 编写一个评委打分的程序1. 编写一个评委打分的程序,实现以下功能:a) 单击“评委给分”按钮时弹出InputBo...
  8. 机器学习的重新思考:人工智能如何学习“失忆”?
  9. 记录hadoop3.2.2出现Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster问题
  10. ftk学习记(对话框篇)
  11. 【转】项目面试-如何介绍自己的项…
  12. 特斯拉线圈怎么用_无线快充居然是特斯拉发明的?不愧是发明家
  13. 关于Windows 7操作系统进行磁盘碎片整理时提示“已使用其他程序计划了磁盘碎片整理程序”的解决办法
  14. 将一个链表分为奇偶两个链表
  15. 计算机管理器没有注册类别,Win10电脑系统没有注册类别怎么解决
  16. 一篇文章轻松搞定SpringSecurity权限框架!
  17. 从Flyme 1到Flyme 6 看魅族如何打造最懂你的OS
  18. Adobe Premiere Pro 2020 系统兼容性报告:不支持的视频驱动程序
  19. 工作中发现 需要改进的地方
  20. echars的简单使用

热门文章

  1. c++类的实例化,有没有new的区别
  2. ExtJS4.2学习(9)——MVC
  3. 求解最长单调递增子串
  4. java linux so
  5. lucene 简单示例
  6. 你所不知道的ASP.NET Core MVC/WebApi基础系列(二)
  7. Docker:You cannot remove a running container
  8. 设计模式——代理模式
  9. 在Cloudshare上使用PAL=〉系统检查及初始化
  10. BB之Uncaught exception:net.rim.device.api....错误的解决之道