IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python+pytest+yaml框架接口关联参数存储&获取 -> 正文阅读

[Python知识库]python+pytest+yaml框架接口关联参数存储&获取

以下方法是用于python+pytest+yaml框架下,多个接口之间的参数关联。例如:登录接口返回的token用于下一个接口使用。

方法一:使用os.environ来存储及获取参数

yaml文件编写如下,动态获取的参数为$sms

-
  case_id: login_success
  title: 获取登录需要的参数
  url: /reglogin
  method: get
  data:
    mobile: 18829354854
    sms: $sms
    timestamp: 1629858222
  ex_result:
    code: 0
    result: {"expire": 3000}

在登录接口下的py文件中,将获取到的参数存起来,语法如下:

os.environ["sms"] = "6666"

封装获取完整测试数据的函数,即将yaml中的动态参数补齐:

import yaml
import os
from string import Template
import json

def replace_yaml(data,**kwargs):
    tempTemplate1 = Template(json.dumps(data))
    dic = {}
    if len(kwargs) == 0 :
        data = tempTemplate1.safe_substitute(os.environ)
    else:
        for key in kwargs:
            dic[key] = kwargs[key]
        data = tempTemplate1.safe_substitute(dic)
    data = json.loads(data)
    return data

在其他接口中调用replace_yaml函数,获得完整的参数:

方法一:部分参数动态获取,例如sms、appkey
new_data = replace_yaml(data,sms=os.environ["sms"],appkey="20")
方法二:全部os.environ中有存储且xml中设置动态获取的参数,进行动态获取
new_data = replace_yaml(data)

方法二:定义全局类变量类,存储参数

新建全部变量类.py文件:

class GlobalData(object):
   cookie = {}

登录接口中获取token,将token存入类变量中,语法如下:

from util.get_globals_data import GlobalData

GlobalData().cookie["token"] = "DFSAFSDGAFSDGjgiojsdofigjsdg"

其他接口中,直接从类变量中取参数token:

from util.get_globals_data import GlobalData

def test_page():
    data = GlobalData().cookie["token"]
    print ("11111111111111:{}".format(data))

方法三:conftest.py文件内,fixture获取

conftest.py文件编写请求登录接口,获取token等必须的参数:

import pytest

# scope='session',session代表仅运行一次
@pytest.fixture(scope='session')
def get_token():
    token = "1111"
    print ("hahha ")
    return token

其他用例直接引入该函数即可,如下:

def test_login(data,get_token):

以上,个人觉着获取token可以用第三种方法,其他接口关联,例如获取product_id等参数关联可以用第二种方法比较好,方便直观。。。
后续有其他方法时,不断更新中

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:46:09  更:2021-12-08 13:48:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:56:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码