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

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

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

1 发送请求,获取响应

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

2 json解析响应数据

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

3 提取数据及数据处理

'''取json串里的值'''
books = jsonstr['books'] #取books对应的值
# print(type(books)) #list 数组
print('books共有%d本书'%len(books)) #数组元素个数 for book in books: #编辑books取每本书的信息
# print(type(book)) # book的类型
# for key in book: # book的keys
# print(key)
'''取出所需的字段'''
index = books.index(book) #索引
NO = str(index+1) #第几本书
average= book['rating']['average'] author = book['author'] #author是数组,可能有多个作者
authors = ','.join(author) pubdate = book['pubdate']
title = book['title']
author_intro = book['author_intro']
summary = book['summary']
price = book['price'] '''格式化输出'''
print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
'作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
NO = NO,
pubdate = pubdate,
author = authors,
author_intro = author_intro,
average = average,
price = price,
summary = summary))

4 断言

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

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

#coding:utf-8
'''
dinghanhua
2018-11-10
接口返回数据为json类型,提取数据实例
''' import requests
import json q = 'python'
count = 3
url = 'https://api.douban.com/v2/book/search?q={0}&count={1}'.format(q,count)
response = requests.get(url) #请求并获取响应 jsonstr = json.loads(response.text) #json解析响应文本
#jsonstr = response.json() '''解析后的数据格式'''
print('响应解析后的类型:',type(jsonstr)) #dict
print('响应解析后的键值对个数:',len(jsonstr)) #字典键值对个数
for key in jsonstr: #打印出所有的keys
print(key ,end=' ') '''取json串里的值'''
books = jsonstr['books'] #取books对应的值
# print(type(books)) #list 数组
print('books共有%d本书'%len(books)) #数组元素个数 for book in books: #编辑books取每本书的信息
# print(type(book)) # book的类型
# for key in book: # book的keys
# print(key)
'''取出所需的字段'''
index = books.index(book) #索引
NO = str(index+1) #第几本书
average= book['rating']['average'] author = book['author'] #author是数组,可能有多个作者
authors = ','.join(author) pubdate = book['pubdate']
title = book['title']
author_intro = book['author_intro']
summary = book['summary']
price = book['price'] '''格式化输出'''
print('NO.{NO}\n书名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定价:{price}\n'
'作者:{author}\n{author_intro}\n内容简介:{summary}'.format(title = title,
NO = NO,
pubdate = pubdate,
author = authors,
author_intro = author_intro,
average = average,
price = price,
summary = summary)) '''断言'''
expectedtitle = ['Python编程:从入门到实践','利用Python进行数据分析','Python基础教程'] #预期结果 if title == expectedtitle[index]:
print('test pass')
else:
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. JS中String()与.toString()的区别

    1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 例如将false转为字符串类型 <script> var str = false.t ...

  2. Rancher2.0 外置存储卷

    一,环境准备 01,基础环境 一台rancher集群 服务器搭建参考原先文章 >>飞机直达 一台nfs服务器 02,nfs服务器搭建 rpm -qa rpcbind|grep rpcbin ...

  3. Html练习 | 小影志首页练习

    <!DOCTYPE html> <head> <title>小影志首页练习</title> <style> /*应用全页字体*/ .pg-f ...

  4. 使用 Ninject

    在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来 ...

  5. 信号和槽:Qt中最差劲的创造

    不要被这个标题唬住了,实际上我是非常认可Qt的.在C++实现的开源产品中没有哪一个的API风格比得上Qt,拥有高度一致性,符合常识,符合直觉,几乎不用学就可以直接上手.或许是由于我们摆脱不了马太效应的 ...

  6. 【Linux】修改ubuntu默认字符集

    今天把以前的项目移植到linux上了,我装的是ubuntu,web服务器是tomcat,发现用freemark模板生成的静态页面全 乱码了,在windows都是正常的,猜想可能是linux字符集的问题 ...

  7. Root用户让其他用户运行某程序

    这里以启动tomcat为例 1.安装tomcat不介绍了,自己百度 2.测试能否使用,略 3.创建tomcat用户 useradd tomcat -s /sbin/nologin 创建tomcat,禁 ...

  8. Android模拟器访问本机服务器

    Android模拟器访问本机服务器,用127.0.0.1访问不到,因为127.0.0.1已经被映射到模拟器了. 可以用以下两种方式访问 1. 用 10.0.2.2 2. 直接用 本机的IP地址,如:1 ...

  9. Python sh模块--------替换subprocess的利器

    官方文档有句话"allows you to call any program",并且: helps you write shell scripts in Python by giv ...

  10. TCP/IP、Http、Soap三个基本的通讯协议

    看到一个说法,比较通俗易懂: HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等....         SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责 ...