Pytest数据驱动Yaml

本文介绍了如何在Python中使用YAML进行数据存储与读写,包括基本的字典和数组操作,以及如何在测试用例中动态参数化YAML文件。重点展示了`get_token.yml`文件的使用和`test_login.py`中的测试用例实现。
摘要由CSDN通过智能技术生成

数据驱动yaml

yaml是一种数据序列化格式
1、yaml支持的数据格式

字典:键值对(key:value)
数组:[],使用时yaml文件前加“-”
字符、布尔值、整数、浮点数、NULL、时间、日期

2、读取、写入、清空方法(common->yaml.util.py)

import os
import yaml

class YamlUtil:
    # 读取extract.yml文件
    def read_extract_yaml(self, key):
        with open(os.getcwd()+"/extract.yml", mode='r', encoding='utf-8') as f:
            # 读取f文件流 读取方式FullLoader,然后复制给value
            value = yaml.load(stream=f, Loader=yaml.FullLoader)
            return value[key]

        # 写入extract.yml文件
    def write_extract_yaml(self, data):
        with open(os.getcwd()+"/extract.yml", mode='a', encoding='utf-8') as f:
            # 写入的数据从data传入
            yaml.dump(data, stream=f, allow_unicode=True)

    # 清空extract_yaml文件(将这个方法放入到前置后置文件中(conftest.py),每次运行用例 他就会自动清空yaml文件内容,无需调佣,自动执行=True)
    def clear_extract_yaml(self):
        # 打开yaml文件
        with open(os.getcwd()+'/extract.yml', mode='w', encoding='utf-8') as f:
            # 清空yaml文件
            f.truncate()

    # 读取extract.yml文件
    def read_gettoken_yaml(self, yaml_name):
        with open(os.getcwd()+"/TestSaasWork/"+yaml_name, mode='r', encoding='utf-8') as f:
            # 读取f文件流 读取方式FullLoader,然后复制给value
            value = yaml.load(stream=f, Loader=yaml.FullLoader)
            return value

3、yaml文件(TestSaasWork->get_token.yml)

-
  name: 获取统一鉴权码token
  request:
    method: post
    url: url
    data:
      account: 账号
      password: 密码
    headers:
      Content-Type: application/x-www-form-urlencoded
      clientAppId: xxx
  validate: None

4、 测试用例(test_login.py)

import pytest
import requests
from common.yaml_util import YamlUtil


class TestLoginRequest:
    # @staticmethod
    # def setup(self):
    #     print('在每个用例之前执行一次')

    # @staticmethod
    # def teardown(self):
    #     print('在每个用例之后执行一次')

    # @pytest.mark.smoke


    @pytest.mark.parametrize('caseinfo', YamlUtil().read_gettoken_yaml('get_token.yml'))
    def test_login(self, caseinfo):
        print('获取token')
        print(caseinfo['name'])
        name = caseinfo['name']
        method = caseinfo['request']['method']
        url = caseinfo['request']['url']
        data = caseinfo['request']['data']
        headers = caseinfo['request']['headers']
        response = requests.request(method, url=url, params=data, headers=headers)
        login_token = response.json()['data']['token']['token']
        authorization = response.json()['data']['token']['principal']
        print('login_token', login_token)
        print('authorization', authorization)
        
if __name__ == '__main__':
    # TestLoginRequest().test_login()
    pytest.main(['-vs'])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值