python ddt处理如何传入 list, dict ,str数据

前尘篇
# coding=utf-8
import ddt
import unittest
import time
test_data =[('test_name','post','https://www.douban.com','{"key": "value"}','{"Content-Type": "text/plain;charset=UTF-8"}','{"projectName": "pipe", "jobId": "70558866DFF6567A"}','data'),('test_name2','get','https://www.douban.com','{"key": "value"}','{"Content-Type": "text/plain;charset=UTF-8"}','{"projectName": "pipe", "jobId": "60558866DFF6567B"}','json')]
test_tuple=[('str1','type1'),('str2', 'type2')]
test_list=["var1", "var2","var3"]
test_dict= [{"username": "zhangsan", "pwd": "zhangsan"},
             {"username": "lisi", "pwd": "lisi"},
             {"username": "wangwu", "pwd": "wangwu"},
             ]

@ddt.ddt
class  Test(unittest.TestCase):
    @ddt.data(*test_data)
    @ddt.unpack
    def test_data(self,test_name,method,url,dict,header,param,type):
        print test_name,method,url,eval(dict),eval(header),eval(param),type,time.asctime()

    @ddt.data(*test_list)
    def test_list(self,var):
        print var

    @ddt.unpack
    @ddt.data(*test_tuple)
    def test_tuple(self,tuple_1,tuple_2):
        print tuple_1,tuple_2

    @ddt.data(*test_dict)
    def test_dict(self,dict):
        print dict.get('username',None)
if __name__ == "__main__":
    unittest.main(verbosity=1)
..........
test_name post https://www.douban.com {'key': 'value'} {'Content-Type': 'text/plain;charset=UTF-8'} {'projectName': 'pipe', 'jobId': '70558866DFF6567A'} data Thu Nov 22 23:34:32 2018
test_name2 get https://www.douban.com {'key': 'value'} {'Content-Type': 'text/plain;charset=UTF-8'} {'projectName': 'pipe', 'jobId': '60558866DFF6567B'} json Thu Nov 22 23:34:32 2018
zhangsan
lisi
wangwu
var1
var2
var3
str1 type1
str2 type2

往事篇
基础单个处理

import ddt
import unittest

test_dict=[{"account": "zs","pwd": "123456"},{"account": "test","pwd": "86556"}]
test_list=['str1','str2','str3']
test_tuple=[(1,2),(0,3),(4,5)]

@ddt.ddt
class  Test(unittest.TestCase):
    @ddt.data(*test_dict)
    def test_dict(self,dict):
        print dict.get('account',None),dict.get('pwd', None)

    @ddt.data(*test_list)
    def test_list(self,test_list):
        print test_list

    @ddt.unpack
    @ddt.data(*test_tuple)
    def test_tuple(self,tuple0,tuple1):
        print tuple0,tuple1
if __name__ == "__main__":
    unittest.main(verbosity=2)


zs 123456
test_dict_1 (__main__.Test)
test 86556
dict() -> new empty dictionary ... ok
str1
test_dict_2 (__main__.Test)
str2
str3
1 2
0 3
4 5
dict() -> new empty dictionary ... ok
test_list_1_str1 (__main__.Test)
str(object='') -> string ... ok
test_list_2_str2 (__main__.Test)
str(object='') -> string ... ok
test_list_3_str3 (__main__.Test)
str(object='') -> string ... ok
test_tuple_1__1__2_ (__main__.Test)
tuple() -> empty tuple ... ok
test_tuple_2__0__3_ (__main__.Test)
tuple() -> empty tuple ... ok
test_tuple_3__4__5_ (__main__.Test)
tuple() -> empty tuple ... ok

----------------------------------------------------------------------
Ran 8 tests in 0.000s

OK

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DDT(Data Driver Tests)是一种数据驱动测试的方法。在Python中,可以使用ddt库实现数据驱动。安装ddt库可以使用pip install ddt命令。使用@ddt注解可以将测试类标记为数据驱动测试类。使用@data(*case_data)注解可以对测试函数进行数据解压,将每个元素传递给测试函数作为参数。ddt库还提供了@unpack注解,用于将元组或列表中的元素按顺序传递给测试函数的参数。下面是一个使用ddt进行数据驱动的示例代码: ```python from ddt import ddt, data, unpack import unittest case_data = [(1, 2, 3), (4, 5, 9), (7, 8, 15)] @ddt class TestDataDriven(unittest.TestCase): @data(*case_data) @unpack def test_addition(self, a, b, expected_result): result = a + b self.assertEqual(result, expected_result) if __name__ == '__main__': unittest.main() ``` 在上述代码中,我们使用了ddt库的@ddt注解将测试类TestDataDriven标记为数据驱动测试类。使用@data(*case_data)注解将每个元组中的元素作为参数传递给测试函数test_addition。使用@unpack注解将元组中的元素按顺序传递给测试函数的参数a、b和expected_result。在测试函数中,我们执行了一个加法操作,并使用self.assertEqual()断言来验证结果是否符合预期。 通过这种方式,我们可以轻松地实现数据驱动的测试,并在多组测试数据上运行相同的业务逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python自动化之-DDT数据驱动](https://blog.csdn.net/qq_37982823/article/details/121662033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [python数据驱动-ddt](https://blog.csdn.net/pangbianlaogu/article/details/80261730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值