1.yaml 可以用来做数据驱动,比较灵活
import yaml #用来读配置文件的比如file文件 文件以yaml和yml结尾 这种格式写用例比较容易处理,字典方便取值 取不到就没有不报错,主要是灵活。
f = open('login.yaml',encoding='utf-8')
res = yaml.load(f) #加载读出文件 将键值对转化为字典
print(res)
比如:login.yml - #是list的写法 可以防止字典相同的key覆盖login.yaml
-
url: /user/login
method: post
datail: 正常登陆
data:
mobile: 18380416336
password: 123456
clientType: 4
check:
- code
-
url: /user/login
method: post
datail: 密码错误
data:
mobile: 13013001301
password: 123456
clientType: 4
check:
-code
2.利用yaml做数据驱动来做测试接口import unittest,requests
import ddt # #可做参数化 自动读文件中数据
from BeautifulReport import BeautifulReport as bf
from urllib import parse
@ddt.ddt #申明这个类要别ddt使用啦
class Login(unittest.TestCase):
base_url = 'http://api.jianyitong.com' #为给url统一加前缀 可写入配置文件比较好
@ddt.file_data('login.yaml')#ddt帮你读文件,获取文件内容,循环调用函数,并且传给下面函数的如kwargs中,有多少条数据循环调用多少次下面的函数 注意修改文件open源码加入utf8编码打开不报错
def test_request(self,**kwargs):
detail = kwargs.get('detail','没写用例描述') # '''和%s组合来描述用例在这里无效。
self._testMethodDoc = detail #动态的用例描述
url = kwargs.get('url')#url
url = parse.urljoin(self.base_url,url)#拼接好url 只能拼接 比如关于/的问题处理
method = kwargs.get('method','get')#请求方式给他一个默认值get 防止没有传请求方式
data = kwargs.get('data',{}) #请求参数
header = kwargs.get('header',{})#请求头
cookie = kwargs.get('cookie',{})#cookie
check = kwargs.get('check')
method = method.lower() #便于处理
try:
if method=='get':
res = requests.get(url,params=data,cookies=cookie,headers=header).text
#因为接口有异常的情况下, 可能返回的不是json串,会报错
else:
res = requests.post(url,data=data,cookies=cookie,headers=header).text
except Exception as e:
print('接口请求出错')
res = e
for c in check:
self.assertIn(c,res,msg='预计结果不符,预期结果【%s】,实际结果【%s】'%(c,res)) #查看是否包含 断言查看一次错误就停止,后面加如错误提示 但check在yml中得是list方便查看是否包含。
sutie = unittest.TestSuite()
sutie.addTest(unittest.makeSuite(Login))#添加用例
run = bf(sutie) #实例化
run.report('login_test','登录测试用例')
print(run.success_count) #通过的次数
print(run.failure_count) #失败的次数
import unittest,requests
import ddt # #可做参数化 自动读文件中数据
from BeautifulReport import BeautifulReport as bf
from urllib import parse
@ddt.ddt #申明这个类要别ddt使用啦
class Login(unittest.TestCase):
base_url = 'http://api.jianyitong.com' #为给url统一加前缀 可写入配置文件比较好
@ddt.file_data('login.yaml')#ddt帮你读文件,获取文件内容,循环调用函数,并且传给下面函数的如kwargs中,有多少条数据循环调用多少次下面的函数 注意修改文件open源码加入utf8编码打开不报错
def test_request(self,**kwargs):
detail = kwargs.get('detail','登录用例描述') # '''和%s组合来描述用例在这里无效。
self._testMethodDoc = detail #动态的用例描述
url = kwargs.get('url')#url
url = parse.urljoin(self.base_url,url)#拼接好url 只能拼接 比如关于/的问题处理
method = kwargs.get('method','get')#请求方式给他一个默认值get 防止没有传请求方式
data = kwargs.get('data',{}) #请求参数
header = kwargs.get('header',{})#请求头
cookie = kwargs.get('cookie',{})#cookie
check = kwargs.get('check')
method = method.lower() #便于处理
try:
if method=='get':
res = requests.get(url,params=data,cookies=cookie,headers=header).text
#因为接口有异常的情况下, 可能返回的不是json串,会报错
else:
res = requests.post(url,data=data,cookies=cookie,headers=header).text
except Exception as e:
print('接口请求出错')
res = e
for c in check:
self.assertIn(c,res,msg='预计结果不符,预期结果【%s】,实际结果【%s】'%(c,res)) #查看是否包含 断言查看一次错误就停止,后面加如错误提示 但check在yml中得是list方便查看是否包含。
sutie = unittest.TestSuite()
sutie.addTest(unittest.makeSuite(Login))#添加用例
run = bf(sutie) #实例化
run.report('login_test','登录测试用例')
print(run.success_count) #通过的次数
print(run.failure_count) #失败的次数版权声明:本文为qq_33106045原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。