码迷,mamicode.com
首页 > 编程语言 > 详细

【python】学习笔记10-ddt数据驱动

时间:2018-03-21 20:00:12      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:requests   sel   testcase   color   header   code   pass   学习笔记   r.js   

DDT的使用

DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据)

只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据

@data(a,b)

那么a和b各运行一次用例

@data([a,d],[c,d])

如果没有unpack,那么[a,b]当成一个参数传入用例运行

如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递

@file_data(filename)

对于json的文件,每一个json元素按照一个用例运行,可以依照python分解元组,列表或者字典的方式分解传入

import ddt,requests
import unittest,BeautifulReport


#参数化,一次执行多条用例,传入不同的值
@ddt.ddt
class MyCase(unittest.TestCase):
    # @ddt.data(1,2,3)# 1、函数参数是一个,同时执行3条用例
    # def testa(self,num):
    #     self.assertTrue(num>2)

    @ddt.data([8,2],[1,3],[5,4],[6,4])# 2、函数参数是多个,同时执行3条用例
    @ddt.unpack #多个参数,有unpack,[8,2]作为两个参数传递
    def testb(self,num,num2):
        self.assertTrue(num > num2)
    # def testc(self,num): #不加unpack时,[8,2]不分解,作为一个参数传递
    #     print(num)
    #     print(‘w‘)


    # @ddt.file_data(‘login.yml‘)
    # @ddt.unpack
    # def test_run(self,**kwargs):#返回 file_data对应文档中的值,以list的形式,lisg每个元素的值是字典
    #     print(‘这个是kwargs。。。。‘,kwargs)
    #     ‘‘‘
    #     {‘method‘: ‘post‘, ‘data‘: {‘passwd‘: ‘aA123456‘, ‘username‘: ‘‘}, ‘check‘: [‘sign‘, ‘userId‘],
    #      ‘url‘: ‘‘, ‘header‘: {‘content_type‘: ‘application/json‘}}
    #      ‘‘‘
    #     method = kwargs.get(‘method‘)
    #     url = kwargs.get(‘url‘)
    #     data = kwargs.get(‘data‘,{})
    #     header = kwargs.get(‘header‘,{})#如果没有的话,默认{}
    #     is_json = kwargs.get(‘is_json‘,0)#如果没有的话,默认0
    #     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)
    #             print(r.text)
    #     else:
    #         requests.get(url,params=data,headers=header,cookies= cookie)#params把url拼到请求里面
    #     self.assertEqual(check.get(‘error_code‘),r.json().get(‘error_code‘)) #只判断error_code
    #     # for c in check:#第二种判断结果的方法,核对结果中是否有参数值
    #     #     print(c)
    #     #     self.assertIn(c,r.text)
    #
    #     # for c in check:#第三种判断方式,判断请求结果中每个key的值是否等于check中每个key的值
    #     #     for k, v in c.items():
    #     #         self.assertEqual(r.json().get(k), v)


if __name__ == __main__:
    unittest.main()
    # suite = unittest.TestSuite()
    # suite.addTests(unittest.makeSuite(MyCase))
    # result_html = BeautifulReport.BeautifulReport(suite)
    # result_html.report(filename=‘测试报告‘, description=‘描述‘, log_path=‘.‘)

 

【python】学习笔记10-ddt数据驱动

标签:requests   sel   testcase   color   header   code   pass   学习笔记   r.js   

原文地址:https://www.cnblogs.com/amengmeng/p/8618864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!