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

python之ddt模式随记三,ddt模式用例标题过长解决

时间:2019-12-12 18:11:50      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:name   api   div   原因   说明   直接   mic   测试   style   

背景:

  使用python+unittest+ddt+excel模式做接口测试时,ddt数据驱动时出现了一个尴尬的问题,大概就是在用ddt数据时,会驱动不同的数据去调用被装饰的函数,然后出现了标题也附带上了value。

直接上问题图

技术图片

 

直接上问题原因代码:

import ddt
import unittest

## 数据源
data = {
    api1:
        [
            [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3}]],
            [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0}]],
        ],
    api2:
        [
            [5, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0}]],
            [6, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0}]]
        ]

}

@ddt.ddt
class Test(unittest.TestCase):
    ## 随便写一个

    # [
    #     [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3}]],
    #     [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0}]],
    # ]
    @ddt.data(*data[api1]) 
    def test001(self,data):
        self.assertEqual(1,data)

if __name__ == __main__:
    unittest.main()

运行解决:

技术图片

 

对,没错,标题就是这么长。标题为什么会突然这么长呢?猜想可能是因为在ddt装饰的时候,@ddt.data(*data[‘api1‘]) ,取得部分的数据。加到了标题里。

话不多说,修改一下试试看,

import ddt
import unittest

## 数据源
data = {
    api1:
        [
            [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3}]],
            [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0}]],
        ],
    api2:
        [
            [5, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0}]],
            [6, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0}]]
        ]

}

@ddt.ddt
class Test(unittest.TestCase):
    ## 随便写一个

    # [
    #     [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3}]],
    #     [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0}]],
    # ]
    @ddt.data(*data)
    def test001(self,data):
        self.assertEqual(1,data)

if __name__ == __main__:
    unittest.main()

结果如下

技术图片

果然如此,那么就好办了,去找一下源码,发现是标题生成的时候加上了value,所以导致名称辣么长。

技术图片

 

 最后,修改成如上图,再次运行首次代码,解决

技术图片

 

 

 

 

 

 

 

 

 

以为这么就完了????不可能!!!

既然可以修改这个,那么是不是可以在后面加上用例的说明咧,说干就干!

首先加上用例说明,这个说明加在哪里、怎么加,随自己心情哈,我这里是加到如图位置,则需要更改一下源码:

技术图片

 

 

 ddt的源码修改一下,如图

技术图片

 

 

运行一下最终代码:

import ddt
import unittest

## 数据源
data = {
    api1:
        [
            [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3},登陆成功测试]],
            [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0},登陆失败测试]],
        ],
    api2:
        [
            [5, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0},新增人员成功测试]],
            [6, [yyy,{\n "a":"3",\n "b":"4"\n}, ‘‘, fail, {"status": 2},‘‘, ‘‘, {"code":0},新增人员失败测试]]
        ]

}

@ddt.ddt
class Test(unittest.TestCase):
    ## 随便写一个

    # [
    #     [2, [checkcode, {\n "a":"1",\n "b":"2"\n}, ‘‘, fail, {"status": 3}]],
    #     [3, [checkcode, {\n "a":"2",\n "b":"3"\n}, ‘‘, fail, {"status": 0}]],
    # ]
    @ddt.data(*data[api1])
    def test001(self,data):
        self.assertEqual(1,data)

if __name__ == __main__:
    unittest.main()

结果如下:

技术图片

 

 ok,加上了,最后体现在报告上面,看一眼效果。

技术图片

 

 嗯嗯,不错不错,忽略错误,标题还是可以的。总结还是挺香的

 

 

 

python之ddt模式随记三,ddt模式用例标题过长解决

标签:name   api   div   原因   说明   直接   mic   测试   style   

原文地址:https://www.cnblogs.com/dflblog/p/12030569.html

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