yaml文件存放測試用例


yaml文件存放測試用例

一、YAML簡介

YAML 是一種可讀性非常高,與程序語言數據結構非常接近。同時具備豐富的表達能力和可擴展性,並且易於使用的數據標記語言。

YAML是 "YAML Ain't a Markup Language"(YAML不是一種標記語言)的遞歸縮寫。

這么命名的方式,表示 YAML 強調的不是標記,而是數據本身。

二、基本語法

  • 1.大小寫敏感
  • 2.使用縮進表示層級關系
  • 3.不允許使用 TAB 鍵來縮進,只允許使用空格鍵來縮進
  • 4.縮進的空格數量不重要
  • 5.使用"#"來表示注釋

三、支持的數據格式

  • 1.對象:鍵值對的集合,又稱映射 (mapping) / 哈希(hashes)/ 字典 (dictionary)
  • 2.數組: 一組按次序排列的值,又稱序列 (sequence) / 列表 (list)
  • 3.純量 (scalars) :單個的,不可再分的值,
    • 常見的純量: 字符串、布爾值、整數、浮點數、null、時間、日期

四、數據格式簡單示例

1、對象數據格式

yaml格式:
name: xiaoming
讀取出來的格式:
{'name':'xiaoming'}

2、數組數據格式(在前面添加 ‘-’ 讀出來就是數組格式)

yaml格式:
- list1
- list2
- list3
讀取出來的格式:
['list1', 'list2', 'list3']

3、純量數據格式

yaml格式:
number: 18.5
string: hello
bool: true
nothing: ~
date: 2020-04-21
time: 2020-04-21 13:14:21
讀取出來的格式:
{
	'number': 18.5,
	'string': 'hello',
	'bool': True,
	'nothing': None,
	'date': datetime.date(2020, 4, 21),
	'time': datetime.datetime(2020, 4, 21, 13, 14, 21)
}

五、YAML使用

1、安裝yaml庫

pip install pyyaml

2、導入yaml庫

import yaml

3、讀取數據

with open(file="conf.yaml", encoding='utf8') as f:
    data = yaml.load(f, yaml.FullLoader)

【注】:YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
data = yaml.load(f)

為了去除這個警告,我們可以在yaml.load( )加一個參數 yaml.FullLoader 即可

4、寫入數據(mode參數:w,覆蓋寫入, a,追加寫入)

new_data = {'name': 'Tom'}
with open(file="conf.yaml", mode='w', encoding="utf-8") as f:
    yaml.dump(new_data, f)

六、YAML文件存放測試用例數據

yaml測試用例示例

register:
  - case_id: 1
    title: 注冊用例1
    method: POST
    url: /register
    data:
      account: '123456789'
      pwd: '12345678'
    expect:
      code: 0
      msg: OK
  - case_id: 2
    title: 注冊用例2
    method: POST
    url: /register
    data:
      account: '123456788'
      pwd: '12345678'
      type: 1
    expect:
      code: 0
      msg: OK
login:
  - case_id: 1
    title: 登陸用例1
    method: POST
    url: /login
    data:
      account: '123456789'
      pwd: '12345678'
    expect:
      code: 0
      msg: OK
  - case_id: 2
    title: 登陸用例2
    method: POST
    url: /login
    data:
      account: '123456788'
      pwd: '12345678'
    expect:
      code: 0
      msg: OK

讀取出的數據(清晰明了)

{
'register': [
    {'case_id': 1, 'title': '注冊用例1', 'method': 'POST', 'url': '/register', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}}, 
    {'case_id': 2, 'title': '注冊用例2', 'method': 'POST', 'url': '/register', 'data': {'account': '123456788', 'pwd': '12345678', 'type': 1}, 'expect': {'code': 0, 'msg': 'OK'}}
    ], 
'login': [
    {'case_id': 1, 'title': '登陸用例1', 'method': 'POST', 'url': '/login', 'data': {'account': '123456789', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}},
    {'case_id': 2, 'title': '登陸用例2', 'method': 'POST', 'url': '/login', 'data': {'account': '123456788', 'pwd': '12345678'}, 'expect': {'code': 0, 'msg': 'OK'}}
    ]
}

七、對讀取YAML文件進行封裝

class YamlHandle(object):

    def __init__(self, conf_file):
        self.conf_file = conf_file

    def load(self) -> dict:
        """
        讀取yaml文件,獲取全部數據
        :return: dict
        """
        with open(file=self.conf_file, encoding='utf8') as f:
            data = yaml.load(f, yaml.FullLoader)
        return data

    def get_data(self, node) -> list:
        """
        獲取節點數據
        :param node: 節點名稱
        :return: dict&str
        """
        return self.load()[node]

yaml 文件通過 pyyaml 庫轉換后就是 Python 中對應的數據類型。直接進行操作即可,相較從 excel 中讀取數據全部是字符串的方式來說,處理更方便。相對於 json 格式,可讀性更高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM