前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python自动化测试用例之----引入ddt数据驱动

python自动化测试用例之----引入ddt数据驱动

作者头像
雷子
发布2021-03-15 16:11:44
8270
发布2021-03-15 16:11:44
举报

前面几篇文章,

postman接口用例转化为python自动化测试用例

postman接口用例转化为python自动化测试用例(二)

postman接口用例转化为python自动化测试用例(三)

接着之前的,有人只希望改用例,不喜欢写代码,那么本篇文章呢,我们引入ddt来管理。这样就不用写代码,只需要维护用例就可以。

ddt 我们可以直接安装,

代码语言:javascript
复制
 pip install ddt

安装完毕,我们导入下依赖包。

ddt包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

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

@data(a,b)

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

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

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

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

那么我们使用第二种方式,我们看看我们的代码是怎么改造的。

代码语言:javascript
复制

import requests
import unittest
from config import baseurl
from readtxt import get
import ddt
restlue=get()
@ddt.ddt
class Testcase(unittest.TestCase):
    def tearDown(self) -> None:
        pass
    def setUp(self) -> None:
        pass
    @ddt.data(*restlue)
    def testone(self,restlue):
        url = baseurl + restlue['url']
        response = requests.request(restlue['method'], url, data=restlue['data'], headers=eval(restlue['headers']))

        self.assertTrue(restlue['assert'] in response.text)
if __name__=="__main__":
    unittest.main()

我们运行一下,看下结果。

这样我们就完成了,之前的用例文件,我们在写入一条用例,试试。

没有添加任何代码,就可以完成。有些人 不喜欢这样的测试报告,那么我们引入我们的测试报告。

https://github.com/TesterlifeRaymond/BeautifulReport

我们选择的是这个大佬的,大家可以自行选择,选择后,我们怎么去改造脚本呢,首先我们的脚本名称是test开通的, 直接修改如下:

代码语言:javascript
复制
if __name__=="__main__":
    import os
    suit=unittest.TestSuite()
    loader = unittest.TestLoader()
    suit.addTests(loader.discover(os.getcwd()))
    filePath = 'report.html'
    fp = open(filePath, 'wb')
    runner = HTMLTestReportCN(
        stream=fp,
        title='Test Report',
        description='Test Report'
    )
    runner.run(suit)
    fp.close()

优化完毕,我们在执行下脚本,没有报错,我们看下测试报告。

再次感谢,作者开源出来这么好的测试报告,我们展示下,输出的。

当然了,大家还可以根据自己的需求进行定制开发,这里呢,我们就简单的就搭建完毕了,接下来呢,是对测试的脚本的抽离,简单的拆分成一个简易的框架,并且可以将测试结果发送出去。接下来的文章会持续关注。这个会做成一个系列的文章,欢迎大家持续关注,雷子说测试,如果你感觉文章对你或者对你身边的人有帮助,请分享出去,帮助更多的人。雷子说测试,值说最好的测试技能,贴近我们的实际应用。

测试不容易,测试不简单。

测试很容易,测试很简单。

一切相对立,一切皆本身。

一切都容易,一切皆难点。

背锅第一位,甩锅有一手。

世上无难事,只怕你测试。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档