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

370 阅读2分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战 

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

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

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

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

 @data(a,b)

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

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

如果没有@unpack,那么[a,b]当成一个参数传入用例运行。如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递.那么我们使用第二种方式,我们看看我们的代码是怎么改造的。


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()

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

image.png

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

image.png

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

        github.com/TesterlifeR…  

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


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()

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

image.png

当然了,大家还可以根据自己的需求进行定制开发,这里呢,我们就简单的就搭建完毕了,接下来呢,是对测试的脚本的抽离,简单的拆分成一个简易的框架,并且可以将测试结果发送出去。