接口测试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