用 yaml 寫測試用例
采用 excel 的方式寫測試用例,格式比較死板,比較容易出錯,采用 yaml / yml 格式來寫用例。
首先安裝 pyyaml:pip install pyyaml
建立一個 login.yaml 文件(或login.yml,這兩種后綴是一樣的),內容如下,可見內容中的key會變顏色,如果沒有變顏色,冒號后面加個空格。
username: joseph passwd: 123456 cpasswd: 123456 name: joseph
建立 a.py 文件讀取 login.yaml
1 import yaml 2 f = open('login.yaml',encoding='utf-8') 3 res = yaml.load(f) 4 print(res)
運行結果如下:可見,從 yaml 文件中讀出來的是一維字典。
{'username': 'joseph', 'name': 'joseph', 'passwd': 123456, 'cpasswd': 123456}
修改 login.yaml 文件,再次執行 a.py 查看運行結果。
url: /api/user/login method: post data: username: joseph #頂頭使用一個tab,否則會報錯 passwd: aA123456 #冒號后面加一個空格 headers: user-agent: Firefox cookies: sign: ssassssss check: error_code: 0
運行結果:可見,增加一個tab 后,就變成了二維字典。
{'check': {'error_code': 0}, 'data': {'username': 'joseph', 'passwd': 'aA123456'}, 'cookies': {'sign': 'ssassssss'}, 'url': '/api/user/login', 'headers': {'user-agent': 'Firefox'}, 'method': 'post'}
但是,這種方法有一個弊端,在 yaml 中錄入多個用例時,后面的用例會把前面的用例覆蓋,如下文中的兩個用例。(在 yaml 中注視同 python一樣,前面加 #)
#正常登錄 url: /api/user/login method: post data: username: joseph passwd: aA123456 headers: user-agent: Firefox cookies: sign: ssassssss check: error_code: 0 #密碼錯誤 url: /api/user/login method: post data: username: joseph passwd: aaaaaaa headers: user-agent: Firefox cookies: sign: ssassssss check: error_code: 3007
執行 a.py 后,運行結果如下:
{'check': {'error_code': 3007}, 'url': '/api/user/login', 'method': 'post', 'data': {'username': 'joseph', 'passwd': 'aaaaaaa'}, 'headers': {'user-agent': 'Firefox'}, 'cookies': {'sign': 'ssassssss'}}
那我們采用什么方式來寫多條測試用例呢,可以采用在每一個用例之前加上 ‘-’ ,做為一個測試用例的起始位置,下方用例頂頭都加上 tab ,如下所示:
- url: /api/user/login method: post datail: 正常登錄 data: username: joseph passwd: aA123456 check: userId: 1 error_code: 0 - url: /api/user/login method: post datail: 密碼錯誤 data: username: joseph passwd: aA123123 check: error_code: 3007 - url: /api/user/login method: post datail: 密碼不傳 data: username: joseph check: error_code: 3001
運行 a.py ,運行結果如下,可見,運行結果變成了一個列表。可以對列表進行循環,讀出每一個用例。
[{'method': 'post', 'check': {'userId': 1, 'error_code': 0}, 'datail': '正常登錄', 'url': '/api/user/login', 'data': {'passwd': 'aA123456', 'username': 'joseph'}}, {'method': 'post', 'check': {'error_code': 3007}, 'datail': '密碼錯誤', 'url': '/api/user/login', 'data': {'passwd': 'aA123123', 'username': 'joseph'}}, {'method': 'post', 'check': {'error_code': 3001}, 'datail': '密碼不傳', 'url': '/api/user/login', 'data': {'username': 'joseph'}}]

浙公網安備 33010602011771號