前篇文章解说了接口测试的测试点、接口格式和注意点,下面我们就通过代码的示例来从简至繁来说明接口过程。
一、案例1(get请求)
代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_test1.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送get请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
print(status)
# 请求的内容
j = r.json()
print(j)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_test1.py
200
{'result': [['裤子女2019新款', '7085918.91397309'], ['裤子女夏', '8402921.55846415'], ['裤子男', '9996041.941283854'], ['裤子男夏季', '4791450.013027441'], ['裤子男韩版潮流', '9105098.140387245'], ['裤子女宽松', '5341028.8175293235'], ['裤子女宽松 直筒', '2485176.4919016883'], ['裤子套装女夏时尚', '816695.6659772493'], ['裤子套装夏女', '2721351.062397373'], ['裤子女显瘦百搭', '1361546.6926656684']]}
Process finished with exit code 0
二、案例2(post请求)
代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_post_test2.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
# 请求的链接
url = 'http://suggest.taobao.com/sug'
# post请求以字典格式传入
data = {'code':'utf-8','q':'裤子','callback':'cb 用例'}
#发送post请求
r = requests.post(url,data)
# 请求的状态码 200代表成功
status = r.status_code
print(status)
#请求的内容
print(r.content)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_post_test2.py
200
b''
Process finished with exit code 0
三、案例3(进行接口状态码断言判断)
代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_test1.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
# 请求的内容
j = r.json()
print(j)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_get_test1.py
测试用例PASS
200
{'result': [['裤子女2019新款', '7085918.91397309'], ['裤子女夏', '8402921.55846415'], ['裤子男', '9996041.941283854'], ['裤子男夏季', '4791450.013027441'], ['裤子男韩版潮流', '9105098.140387245'], ['裤子女宽松', '5341028.8175293235'], ['裤子女宽松 直筒', '2485176.4919016883'], ['裤子套装女夏时尚', '816695.6659772493'], ['裤子套装夏女', '2721351.062397373'], ['裤子女显瘦百搭', '1361546.6926656684']]}
Process finished with exit code 0
四、案例4(接口内容断言判断--正常/异常情况)
正常情况
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_test1.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容,存在则PASS,否则为FAIL
if '裤子男夏季' in str(j):
print('存在此数据')
else:
print('不存在此数据')
print(j)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_get_test1.py
测试用例PASS
200
存在此数据
{'result': [['裤子女2019新款', '7085918.91397309'], ['裤子女夏', '8402921.55846415'], ['裤子男', '9996041.941283854'], ['裤子男夏季', '4791450.013027441'], ['裤子男韩版潮流', '9105098.140387245'], ['裤子女宽松', '5341028.8175293235'], ['裤子女宽松 直筒', '2485176.4919016883'], ['裤子套装女夏时尚', '816695.6659772493'], ['裤子套装夏女', '2721351.062397373'], ['裤子女显瘦百搭', '1361546.6926656684']]}
Process finished with exit code 0
异常情况:
在这里修改了上面的 裤子男夏季修改为裤子男夏季1
import requests
# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容,存在则PASS,否则为FAIL
if '裤子男夏季1' in str(j):
print('存在此数据')
else:
print('不存在此数据')
print(j)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_get_test1.py
测试用例PASS
200
不存在此数据
{'result': [['裤子女2019新款', '7085918.91397309'], ['裤子女夏', '8402921.55846415'], ['裤子男', '9996041.941283854'], ['裤子男夏季', '4791450.013027441'], ['裤子男韩版潮流', '9105098.140387245'], ['裤子女宽松', '5341028.8175293235'], ['裤子女宽松 直筒', '2485176.4919016883'], ['裤子套装女夏时尚', '816695.6659772493'], ['裤子套装夏女', '2721351.062397373'], ['裤子女显瘦百搭', '1361546.6926656684']]}
Process finished with exit code 0
五、案例5(接口代码封装---请求地址与逻辑代码区分之get请求)
1、增加配置文件为config.py
代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: config.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
"""(接口代码封装---请求地址与逻辑代码区分之post请求)"""
# baseurl 接口一般分为测试接口和正式接口
baseurl = 'http://suggest.taobao.com'
# 设定登录接口为baseurl
# 设定首页接口
url_home = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'
2、在interface_get_test.py文件头部导入上面的配置文件:import config
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_test1.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
import config # 导入config配置文件
# 发送请求 ,使用config.来调用想要的接口,这里调用首页接口
r = requests.get(config.url_home)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容,存在则PASS,否则为FAIL
if '裤子男夏季1' in str(j):
print('存在此数据')
else:
print('不存在此数据')
print(j)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_get_test1.py
测试用例PASS
200
不存在此数据
{'result': [['裤子女2019新款', '7085918.91397309'], ['裤子女夏', '8402921.55846415'], ['裤子男', '9996041.941283854'], ['裤子男夏季', '4791450.013027441'], ['裤子男韩版潮流', '9105098.140387245'], ['裤子女宽松', '5341028.8175293235'], ['裤子女宽松 直筒', '2485176.4919016883'], ['裤子套装女夏时尚', '816695.6659772493'], ['裤子套装夏女', '2721351.062397373'], ['裤子女显瘦百搭', '1361546.6926656684']]}
Process finished with exit code 0
以后我们只需要该URL地址即可,无需修改代码,很方便
六、案例6(接口代码封装---请求地址与逻辑代码区分之post请求)
首先查看config.py文件
代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: config.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
"""(接口代码封装---请求地址与逻辑代码区分之post请求)"""
# baseurl 接口一般分为测试接口和正式接口
baseurl = 'http://suggest.taobao.com'
# 设定登录接口为baseurl
url_login = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'
# 设定注册接口
url_register = {'注册接口': baseurl + '/sug', 'parmras': {'code': 'utf-8', 'q': '裤子', 'callback': 'cb 用例'}}
# 设定首页接口
url_home = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'
interface_post_test.py文件代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_post_test2.py
# @Time : 2019/8/16
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
import config # 引入config配置接口的文件
# 请求的链接
# url = 'http://suggest.taobao.com/sug'
# post请求以字典格式传入
# data = {'code':'utf-8','q':'裤子','callback':'cb 用例'}
#发送post请求
r = requests.post(config.url_register['注册接口'],config.url_register['parmras'])
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
#请求的内容
print(r.content)
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_post_test2.py
测试用例PASS
200
b''
Process finished with exit code 0
结论:此处引用了python字典方法
七、案例7(一次执行多个接口方法)
新建interface_python.py文件,代码示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File Name: interface_python.py
# @Time : 2019/8/17
# @Author : zhong
# @Blog : https://www.jianshu.com/search?q=keitwo&page=1&type=note
# @QQ交流 : 3227456102
import requests
import config # 导入config配置文件
# 注册接口函数
def test_register():
#发送post请求
r = requests.post(config.url_register['注册接口'],config.url_register['parmras'])
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
#请求的内容
print(r.content)
# 登录接口函数
def test_login():
# 发送请求 ,使用config.来调用想要的接口,这里调用首页接口
r = requests.get(config.url_home)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口状态码断言 等于200则PASS ,否则为FAIL
if status == 200:
print('测试用例PASS')
else:
print('测试用例FAIL')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容,存在则PASS,否则为FAIL
if '裤子男夏季1' in str(j):
print('存在此数据')
else:
print('不存在此数据')
print(j)
# 调用执行测试接口
test_register()
print('执行了 测试注册接口的函数\t')
# 调用执行登录接口
test_login()
print('执行了 测试登录接口的函数')
运行结果
D:\python\python3.6.1\python36.exe E:/study/InterfaceTest/interface_python.py
测试用例PASS
200
b''
执行了 测试注册接口的函数
测试用例PASS
200
不存在此数据
{'result': [['裤子女2019新款', '5275957.123179437'], ['裤子女夏', '10531147.817467552'], ['裤子男', '10015857.682509309'], ['裤子男夏季', '4564859.324174869'], ['裤子男韩版潮流', '9832323.47452347'], ['裤子女宽松', '5026630.587562665'], ['裤子女宽松 直筒', '2355817.2289288472'], ['裤子套装女夏时尚', '441211.076511861'], ['裤子套装夏女', '2042939.619458128'], ['裤子女显瘦百搭', '1223956.0558261117']]}
执行了 测试登录接口的函数
Process finished with exit code 0