接口测试1
- 2019 年 10 月 8 日
- 筆記
前篇文章解说了接口测试的测试点、接口格式和注意点,下面我们就通过代码的示例来从简至繁来说明接口过程。
一、案例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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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:pythonpython3.6.1python36.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