aml文件是專門用來寫配置文件的語言,非常簡潔和強大,遠比json格式方便。
在PC中新建一個yml/yaml為為縮略名的文件,輸入信息見下圖
新建一個py文件處理yml文件,直接處理成字典格式
縮進為二維數組:
import yaml
f = open('mpp.yml')
print(yaml.load(f))
yml文件信息和運行結果如下圖:
ddt相當於參數化一個東西
只傳入一個參數:
傳入多個參數:
使用ddt+yml+unittest實現自動化接口測試,代碼如下:
import ddt
import unittest,requests
from BeautifulReport import BeautifulReport
@ddt.ddt
class MyCase(unittest.TestCase):
@ddt.file_data('login.yml')
@ddt.unpack
def test_run(self,**kwargs):#不確定有多少參數,用**kwargs獲取用例的所有信息
method = kwargs.get('method')
url = kwargs.get('url')
data = kwargs.get('data')
header = kwargs.get('header',{}) #從用例里獲取header,如果沒有這個字段返回空
is_json = kwargs.get('is_json',0) #從用例里獲取json,如果沒有這個字段返回空
cookie = kwargs.get('cookie',{}) #同上
check = kwargs.get('check')
if method == 'post':
if is_json:
r = requests.post(url, json=data, headers=header,
cookies=cookie)
else:
r = requests.post(url,data=data,headers=header,
cookies=cookie)
else:
r = requests.get(url,params=dataa,headers=header,
cookies=cookie)#params是直接把傳參拼接到url后
# self.assertEquals(check.get('error_code'),r.json().get('error_code'))
#判斷check中的預期結果和響應參的error_code是否一樣
for c in check:#實際check中不止一個error_code,還有其他多個響應參
self.assertIn(c,r.text)
if __name__ == '__main__':
# unittest.main() #自動運行全部用例
suite = unittest.TestSuite()
suite.addTests(unittest.makeSuite(MyCase))
result = BeautifulReport(suite)
result.report(filename='mpp的測試報告0318', description='描述B', log_path='')