一、YAML詳解
YAML是一種數據類型,它能夠和JSON數據相互轉化,它本身也是有很多數據類型可以滿足我們接口 的參數類型,擴展名可以是.yml或.yaml
作用:
1.全局配置文件
基礎路徑,數據庫信息,賬號信息,日志格式,報告名稱等。
2.編寫測試用例
接口自動化測試用例
語法結構:
1.區分大小寫 Name name
2.通過縮進來表示層級關系。使用空格。
3.可以使用#作為注釋
4.字符串一般默認可以不使用引號,必須時才使用。
數據類型:
基本類型:
整數
浮點數
字符串(當有特殊字符時:雙引號不會被轉義,其它的都會加一個轉義符\)
布爾值
null
日期時間

復雜類型:
對象(字典):鍵: (空格) 值

數組(列表):它是使用 一組橫線"-" 開頭。

數據類型強轉:【雞肋】
!!int
!!str
引用:
引用:&建立錨點(標記),*使用錨點,<<表示合并到當前數據。


二、YAML的讀寫和清空
安裝:
pip install pyyaml
讀寫和清空
#讀取
def read_yaml(yaml_path): with open(yaml_path,encoding="utf-8",mode="r") as f: value = yaml.safe_load(f) return value #寫入
def write_yaml(yaml_path,data): with open(yaml_path,encoding="utf-8",mode="w") as f: yaml.safe_dump(data, stream=f,allow_unicode=True) # #清空
def clear_yaml(yaml_path): with open(yaml_path, encoding="utf-8", mode="w") as f: pass

三、pytest的parametrize結合yaml實現數據驅動
@pytest.mark.parametrize("參數名","參數值(可以是list或tuple)")
方法一:【不常用】

方法二:【常用】
class TestApi:@pytest.mark.parametrize("caseinfo", read_yaml("../testcases/test_api.yaml"))def test_login2(self,caseinfo):print("登錄測試用例:%s " % caseinfo)
-username: adminpassword: "001"
-username: admin2password: "002"
-username: admin3password: "003"

多個用例
-feature: 正例:接口所屬模塊story: 接口名稱title: 用例標題request:method: geturl: http://www.baidu.comheaders: 請求頭params: 請求參數validate: null-feature: 反例:接口所屬模塊story: 接口名稱title: 用例標題request:method: geturl: http://www.baidu.comheaders: 請求頭params: 請求參數validate: null
