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='')