实际项目中用python脚本实现接口测试的步骤:

1 发送请求,获取响应  》》2 提取响应里的数据,对数据进行必要的处理  》》3 断言响应数据是否与预期一致

以豆瓣接口为例,做一个简单的接口测试吧。使用到的知识涉及requests库,json库。

1 发送请求,获取响应

  1. #coding:utf-8
  2. '''
  3. dinghanhua
  4. 2018-11-10
  5. 接口返回数据为json类型,提取数据实例
  6. '''
  7.  
  8. import requests
  9. import json
  10.  
  11. q = 'python'
  12. count = 3
  13. url = 'https://api.douban.com/v2/book/search?q={0}&count={1}'.format(q,count)
  14. response = requests.get(url) #请求并获取响应

2 json解析响应数据

  1. jsonstr = json.loads(response.text) #json解析响应文本
    #或者jsonstr = response.json()
  2.  
  3. '''解析后的数据格式'''
  4. print('响应解析后的类型:',type(jsonstr)) #dict
  5. print('响应解析后的键值对个数:',len(jsonstr)) #字典键值对个数
  6. for key in jsonstr: #打印出所有的keys
  7. print(key ,end=' ')

3 提取数据及数据处理

  1. '''取json串里的值'''
  2. books = jsonstr['books'] #取books对应的值
  3. # print(type(books)) #list 数组
  4. print('books共有%d本书'%len(books)) #数组元素个数
  5.  
  6. for book in books: #编辑books取每本书的信息
  7. # print(type(book)) # book的类型
  8. # for key in book: # book的keys
  9. # print(key)
  10. '''取出所需的字段'''
  11. index = books.index(book) #索引
  12. NO = str(index+1) #第几本书
  13. average= book['rating']['average']
  14.  
  15. author = book['author'] #author是数组,可能有多个作者
  16. authors = ','.join(author)
  17.  
  18. pubdate = book['pubdate']
  19. title = book['title']
  20. author_intro = book['author_intro']
  21. summary = book['summary']
  22. price = book['price']
  23.  
  24. '''格式化输出'''
  25. print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
  26. '作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
  27. NO = NO,
  28. pubdate = pubdate,
  29. author = authors,
  30. author_intro = author_intro,
  31. average = average,
  32. price = price,
  33. summary = summary))

4 断言

  1. '''断言'''
  2. expectedtitle = ['Python编程:从入门到实践','利用Python进行数据分析','Python基础教程'] #预期结果(接口数据会变,根据实际情况添加预期结果)
  3.  
  4. if title == expectedtitle[index]:
  5. print('test pass')
  6. else:
  7. print('test fail. The expected title is %s,but the actual title is: %s.'%(expectedtitle[index],title))

好了,简单的接口测试脚本完成。完整代码:

  1. #coding:utf-8
  2. '''
  3. dinghanhua
  4. 2018-11-10
  5. 接口返回数据为json类型,提取数据实例
  6. '''
  7.  
  8. import requests
  9. import json
  10.  
  11. q = 'python'
  12. count = 3
  13. url = 'https://api.douban.com/v2/book/search?q={0}&count={1}'.format(q,count)
  14. response = requests.get(url) #请求并获取响应
  15.  
  16. jsonstr = json.loads(response.text) #json解析响应文本
    #jsonstr = response.json()
  17.  
  18. '''解析后的数据格式'''
  19. print('响应解析后的类型:',type(jsonstr)) #dict
  20. print('响应解析后的键值对个数:',len(jsonstr)) #字典键值对个数
  21. for key in jsonstr: #打印出所有的keys
  22. print(key ,end=' ')
  23.  
  24. '''取json串里的值'''
  25. books = jsonstr['books'] #取books对应的值
  26. # print(type(books)) #list 数组
  27. print('books共有%d本书'%len(books)) #数组元素个数
  28.  
  29. for book in books: #编辑books取每本书的信息
  30. # print(type(book)) # book的类型
  31. # for key in book: # book的keys
  32. # print(key)
  33. '''取出所需的字段'''
  34. index = books.index(book) #索引
  35. NO = str(index+1) #第几本书
  36. average= book['rating']['average']
  37.  
  38. author = book['author'] #author是数组,可能有多个作者
  39. authors = ','.join(author)
  40.  
  41. pubdate = book['pubdate']
  42. title = book['title']
  43. author_intro = book['author_intro']
  44. summary = book['summary']
  45. price = book['price']
  46.  
  47. '''格式化输出'''
  48. print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
  49. '作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
  50. NO = NO,
  51. pubdate = pubdate,
  52. author = authors,
  53. author_intro = author_intro,
  54. average = average,
  55. price = price,
  56. summary = summary))
  57.  
  58. '''断言'''
  59. expectedtitle = ['Python编程:从入门到实践','利用Python进行数据分析','Python基础教程'] #预期结果
  60.  
  61. if title == expectedtitle[index]:
  62. print('test pass')
  63. else:
  64. print('test fail. The expected title is %s,but the actual title is: %s.'%(expectedtitle[index],title))

the end!

python+requests+json 接口测试思路示例的更多相关文章

  1. python中json的操作示例

    先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="a ...

  2. Python操作JSON数据代码示例

    #!/usr/bin/env python import json import os def json_test(): return_dic = {} json_data = { 'appid':' ...

  3. python+requests实现接口测试 - get与post请求使用(转载)

    转自:http://www.cnblogs.com/nizhihong/p/6567928.html 简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Lic ...

  4. python+requests实现接口测试 - cookies的使用

    在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息, 会造成识别失败. 如一些需要用户登录以后才能访问的页面. import requests mya ...

  5. python+requests实现接口测试 - get与post请求使用

    简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 ...

  6. python+requests+excel 接口测试

    1.EXCEL文件接口保存方式,如图. 2.然后就是读取EXCEL文件中的数据方法,如下: import xlrd class readExcel(object): def __init__(self ...

  7. Python+requests+excel接口测试

    2018-06-14   17:00:13 环境准备: - Python 3.7 - requests库 - xlrd 1.创建Excel文件 2.读取Excel文件 import xlrd clas ...

  8. python+requests之接口测试

    最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...

  9. python+requests实现接口测试 - cookies的使用 (转载)

    出自:https://www.cnblogs.com/nizhihong/p/6699492.html 在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别 ...

随机推荐

  1. 获取Java class或者jar文件的本地路径

    对于常规java class打成jar文件后,要获取它的本地路径,可以用如下方法. final File f = new File(TestClass.class.getProtectionDomai ...

  2. Oracle列转行函数Listagg以及pivot查询示例

    简单的Oracle列转行函数Listagg示例: CREATE TABLE tbl_test (catalog VARCHAR(1),product VARCHAR(2),amount NUMBER) ...

  3. Qt客户端阿里云服上传文件

    整体原理: 阿里云提供了c程序上传文件到阿里云服务器的sdk工具包,将这个工具包继承在自己的客户端,调用接口即可实现上传文件. 前期准备: 1.阿里云c程序客户端的sdk,下载地址:https://h ...

  4. mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

  5. linux下memcached的启动/结束的方式

    当前项目中,linux下memcached的启动/结束的方式 默认情况下memcached安装到/usr/local/bin下. 进入安装目录,启动memcached:/usr/local/memca ...

  6. 解决引入外部文件(图片、js等)出现 403 net::ERR_ABORTED 的问题

    页面中引入外网的链接资源,会产生一个新的http请求.为了安全(URL里可能包含用户信息),浏览器一般都会给这写请求头加上表示来源的referrer 字段. 所以,此时我们需要隐藏外部链接中的refe ...

  7. HDU 1754——I Hate It——————【线段树单点替换、区间求最大值】

    I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  8. (二) 修改IDEA自带的 maven 仓库

    详细可见教程 :https://www.yiibai.com/testng/ 1.新建一个maven项目 Maven简介: Maven是一个项目管理和综合工具.Maven提供了开发人员构建一个完整的生 ...

  9. windows下配置nginx环境

    一. nginx软件拷贝 拷贝 nginx文件 到对应的服务目录中 如 E:/service/nginx nginx文件地址: 链接: http://pan.baidu.com/s/1c25oq6O ...

  10. 【学习笔记】Java中生成对象的5中方法

    概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.re ...