无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | YAML是什么?

2023-06-08 11:40 作者:愛測軟件測試  | 我要投稿

數(shù)據(jù)驅(qū)動

在實際的測試工作中,通常需要對大量的測試數(shù)據(jù)進行驗證,以保證軟件的正確性。這種數(shù)據(jù)量大的測 試,在功能測試中非常耗費人力物力,但是在自動化測試中,卻非常容易實現(xiàn)。只要編寫好測試的操作 步驟,然后將多組不同的測試數(shù)據(jù)傳入到相同的測試用例中,就能輕松實現(xiàn)對不同測試數(shù)據(jù)的驗證。 前面學(xué)習(xí)了參數(shù)化用例,當(dāng)數(shù)據(jù)量非常大的時候,我們不能把所有的用例都放在測試模塊中??梢詫?shù) 據(jù)存放到一個外部文件中,使用的時候?qū)⑼獠课募臄?shù)據(jù)讀取出來,也方便測試數(shù)據(jù)的管理。數(shù)據(jù)與測 試用例分別管理,可以利用外部數(shù)據(jù)源 YAML、Json、Excel、CSV 等工具管理測試數(shù)據(jù)。這里推薦使 用 YAML 工具。

YAML 介紹

YAML 是在開發(fā)中的一種標(biāo)記語言,適合用來表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件等。YAML 不局限于 語言,可以用于不同語言程序間的數(shù)據(jù)傳遞(類似于 Json)。YAML 具有豐富的語法結(jié)構(gòu)和可擴展性, YAML 的配置文件后綴為 .yml 或 .yaml(例如:data.yaml)。

YAML 的基本語法

大小寫敏感

使用縮進表示層級關(guān)系

縮進不允許使用 tab,只允許空格

縮進的空格數(shù)不重要,只要相同層級的元素左對齊即可

'#'表示注釋

YAML 支持?jǐn)?shù)據(jù)類型

對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)

數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)

純量:單個的、不可再分的值

YAML 表示列表

以 - 開頭的行表示構(gòu)成一個數(shù)組:

- hogwarts1 - hogwarts2 - hogwarts3

對應(yīng)的 python 的數(shù)據(jù)結(jié)構(gòu)是:['hogwarts1','hogwarts2','hogwarts3']

也可以列表嵌套列表,例如:

- - hogwarts1 - hogwarts2 - hogwarts3

對應(yīng)的 python 的數(shù)據(jù)結(jié)構(gòu)是: [['hogwarts1','hogwarts2','hogwarts3']]

YAML 表示字典

key: value,冒號后面要加空格。

id: 1 name: company1 price: 200W

上面表達(dá) python 里的字典: {'id': 1, 'name': 'company1', 'price': '200W'} 相對復(fù)雜的例子:

hogwarts: - id: 1 name: 格蘭芬多 price: 200 - id: 2 name: 拉文克勞 price: 200

對應(yīng)的 python 的數(shù)據(jù)結(jié)構(gòu)是: {'hogwarts': [{'id': 1, 'name': '格蘭芬多', 'price': 200}, {'id': 2, 'name': '拉文克勞', 'price': 200}]}

YAML 表示純量

純量是最基本的,不可再分的值,包括:

  • 字符串

  • 布爾值

  • 整數(shù)

  • 浮點數(shù)

  • Null

  • 時間

  • 日期

pytest 結(jié)合 YAML

PyYAML 模塊在 python 中用于處理 YAML 格式數(shù)據(jù),主要使用 yaml.safe_dump() 和 yaml.safe_load() 函數(shù)將 Python 對象和 YAML 格式數(shù)據(jù)相互轉(zhuǎn)換。

安裝

pip install PyYAML

案例

創(chuàng)建用例文件以及數(shù)據(jù)文件來完成數(shù)據(jù)驅(qū)動的測試案例,創(chuàng)建一個文件夾 testdata,在這個文件夾下創(chuàng) 建 data.yml 和 test_yaml.py 文件。

創(chuàng)建 data.yml 文件:

- - 1 - 2 - - 20 - 30

創(chuàng)建“test_yaml.py”,代碼如下:

import pytest import yaml @pytest.mark.parametrize("a,b", yaml.safe_load(open("data.yml",\ encoding='utf-8'))) def test_foo(a,b): print(f"a + b = {a + b}")

代碼分析:

yaml 文件里定義了列表數(shù)據(jù),通過 open( ) 方法獲取 data.yml 文件對象,使用 yaml.safe_load() 加載這個文件對象,將 yaml 格式文件轉(zhuǎn)換為 Python 對象,分別傳遞到用例中生成多條用例執(zhí)行。

運行結(jié)果:

... test_params.py::test_foo[1-2] test_params.py::test_foo[20-30] ...

運行結(jié)果中 [1-2] 和 [20-30] 表示傳入的兩組參數(shù),分別傳入 test_foo( ) 用例方法中執(zhí)行,并且 分別生成兩條測試結(jié)果。pytest 結(jié)合 yaml 實現(xiàn)數(shù)據(jù)驅(qū)動,yaml 文件作為用例數(shù)據(jù)源,驅(qū)動測試用例的 執(zhí)行,使測試用例數(shù)據(jù)維護更加方便快捷。


軟件測試 | YAML是什么?的評論 (共 條)

分享到微博請遵守國家法律
旺苍县| 高碑店市| 潢川县| 沿河| 尤溪县| 当涂县| 崇左市| 宿迁市| 永年县| 威宁| 元氏县| 玉树县| 灵宝市| 油尖旺区| 绥阳县| 宜都市| 文昌市| 弥勒县| 砀山县| 泸定县| 运城市| 滦南县| 乡城县| 大悟县| 滕州市| 比如县| 大方县| 阜平县| 石阡县| 淮北市| 文昌市| 万州区| 齐齐哈尔市| 叙永县| 菏泽市| 鹿泉市| 永嘉县| 三亚市| 平和县| 新丰县| 手机|