这是我参与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()
我们运行一下,看下结果。
这样我们就完成了,之前的用例文件,我们在写入一条用例,试试。
没有添加任何代码,就可以完成。有些人 不喜欢这样的测试报告,那么我们引入我们的测试报告。
我们选择的是这个大佬的,大家可以自行选择,选择后,我们怎么去改造脚本呢,首先我们的脚本名称是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()
优化完毕,我们在执行下脚本,没有报错,我们看下测试报告