背景说明:
1、为了防止三天打鱼两天晒网式学习
2、每日更新1-2个小知识点或者案例
3、只看和跟着做的理解程度是不一样的
4、建议一起打卡练习
5、互相督促打卡 + v:yifuqiang2021
Day57
目标:
接口关联
配置文件封装与调用
一、接口关联
接口的关联,就是特定数据的传递
token与Session是在接口端常用的鉴权机制
基于token是通过变量的保存和传递来实现数据的关联性
基于Session是通过requests.session()对象来实现数据的关联性
1.1)基于token来实现接口关联
import requests
# 接口关联案例
url = 'http://39.98.138.157:5000/api/login'
data = {
'username': 'admin',
'password': '123456'
}
res = requests.post(url=url,json=data)
url = 'http://39.98.138.157:5000/api/getuserinfo'
headers = {
'token':res.json()['token']
}
res = requests.get(url=url,headers=headers)
print(res.text)
复制
运行结果:
1.2)基于session来实现接口关联
创建session对象后,基于这个session所产生的相关session信息,都会被保存
使用:
session = requests.session()
session.get()
session.post()
二、实现接口关联的测试用例
实例流程:用户登录→拿到token→获取用户信息→加入商品到购物车→下单
import requests
# 接口关联案例
# 用户登录
url = 'http://39.98.138.157:5000/api/login'
data = {
'username': 'admin',
'password': '123456'
}
res = requests.post(url=url,json=data)
# 根据登录接口的token,获取用户信息
url = 'http://39.98.138.157:5000/api/getuserinfo'
headers = {
'token':res.json()['token']
}
res1 = requests.get(url=url,headers=headers)
print(res1.text)
# 添加商品到购物车,基于token,userid,openid
url = 'http://39.98.138.157:5000/api/addcart'
data = {
'userid': res1.json()['data'][0]['userid'],
'openid': res1.json()['data'][0]['openid'],
'productid': 8888
}
res2 = requests.post(url=url,headers=headers,json=data)
print(res2.text)
# 购物车下单
url = 'http://39.98.138.157:5000/api/createorder'
data = {
'userid': res2.json()['data'][0]['userid'],
'openid': res2.json()['data'][0]['openid'],
'cartid': res2.json()['data'][0]['cartid'],
'productid': 8888
}
res3 = requests.post(url=url,headers=headers,json=data)
print(res3.text)
复制
运行结果:
三、配置的文件的封装与调用
ini文件的读取
准备ini文件
导包:import configparser
实例化对象:conf = configparser.ConfigParser()
通过实例化对象读取配置文件:conf.read('./路径/config.ini')
获取指定配置:url = conf.get('TEST_SERVER','url')
yaml文件的读取
导包:from ddt import ddt,file_data
class前@ddt
def前@file_data('路径/文件名')
def 函数名(self,yaml文件里的字段名)
3.1)封装数据至ini配置文件,并读取
新建一个config.ini的文件,并准备内容
# 读取ini配置文件的模块
import configparser
# 读取配置文件中的内容
conf = configparser.ConfigParser()
conf.read('./conf/config.ini')
url = conf.get('TEST_SERVER','url')
print(url)
复制
运行结果:
将配置文件进行封装后调用
read_ini.py封装的配置文件函数
# 读取ini配置文件的模块
import configparser
# 读取配置文件中的内容
def read_ini(path,selection,option):
conf = configparser.ConfigParser()
conf.read(path)
value = conf.get(selection,option)
return value
# 在unittest框架下的简单调用
import unittest
import requests
from demo0815.conf import read_ini
class CaseDemo(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.url = read_ini.read_ini('./conf/config.ini','TEST_SERVER','url')
# 测试用例的定义
def test_01(self):
url = self.url + 'api/login'
print(url)
复制
运行结果:
3.2)封装接口路径至yaml,以及读取
import unittest
from demo0815.conf import read_ini
from ddt import ddt,file_data
@ddt
class CaseDemo(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.url = read_ini.read_ini('./conf/config.ini','TEST_SERVER','url')
# 测试用例的定义
@file_data('./data/path.yaml')
def test_01(self,path):
url = self.url + path
print(url)
if __name__ == '__mian__':
unittest.main()
复制
运行结果:
四、总结
框架指的是
一个个单独的功能模块组合而成,让每一个模块专注于自己的实现。
比如数据模块提供数据,专注于业务逻辑处理模块,前端展示模块等等等等
接口关联
接口的关联,就是特定数据的传递
token与Session是在接口端常用的鉴权机制
基于token是通过变量的保存和传递来实现数据的关联性
基于Session是通过requests.session()对象来实现数据的关联性
配置文件封装与调用
ini文件的读取
准备ini文件
导包:import configparser
实例化对象:conf = configparser.ConfigParser()
通过实例化对象读取配置文件:conf.read('./路径/config.ini')
获取指定配置:url = conf.get('TEST_SERVER','url')
yaml文件的读取
导包:from ddt import ddt,file_data
class前@ddt
def前@file_data('路径/文件名')
def 函数名(self,yaml文件里的字段名)
“你的鼓励,是我继续的动力”