Python - ddt装饰测试类处理数据

ddt是处理数据的模型,配合unittest使用

一、@data使用方法,一个参数接收

#coding=utf-8
import unittest
from ddt import ddt,data,unpack

b = [{"i":"[1,2,3,4]"},{"j":"[1,2,3,5]"}]
@ddt    # 装饰测试类
class Test_ddt(unittest.TestCase):

    @data(*b)   ''' 脱一层外套操作,装饰测试方法,拿到几条数据则执行几条用例
                    这时类方法就可以接收参数了‘’‘
    def test_print_args(self,item):    # @ddt只能放一个参数接收
        print("item",item)

if __name__ == '__main__':
    unittest.main()

item {'i': '[1,2,3,4]'}
item {'j': '[1,2,3,5]'}

二、@unpack使用方法,大于一个参数接收

#coding=utf-8
import unittest
from ddt import ddt,data,unpack

i = [[1,2,3],[4,5,6]]
@ddt    # 装饰测试类
class Test_ddt(unittest.TestCase):

    @data(*i)   ''' 脱一层外套操作,装饰测试方法,拿到几条数据则执行几条用例
                    这时类方法就可以接收参数了‘’‘
                
    @unpack     # 将@data处理后的数据以逗号间隔为一个新数据
    def test_print_args(self,a,b,c):    # @unpack必须放对应个数的参数接收
        print("a",a)
        print("b",b)
        print("c",c)

if __name__ == '__main__':
    unittest.main()

a 1
b 2
c 3
a 4
b 5
c 6

三、实际应用

#coding=utf-8
import unittest
from ddt import ddt,data
from tools.http_requests import HttpRequests
from tools.do_excel import DoExcel
from tools.get_cookies import GetCookies

test_data = DoExcel('/Users/lucky/PycharmProjects/api/api.xlsx', "Sheet1").get_data()

@ddt    # 装饰测试类
class Test_ddt(unittest.TestCase):

    @data(*test_data)   # 脱一层外套操作,装饰测试方法,拿到几条数据则执行几条用例
    def test_print(self,item):
        res = HttpRequests().run(method=item['method'],url=item['url'],data=item['data'],cookies=getattr(GetCookies,'cookies'))
        #print(type(['method']))
        #if res.cookies:
            #setattr(GetCookies,'cookies',res)
        try:
            self.assertEqual(item['expected'],res['code'])
        except AssertionError as e:
            raise e

if __name__ == '__main__':
    unittest.main()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦朝胖子得加钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值