一、安装ddt模块1pipinstallddt ddt有四种模式:引入装饰器导入数据拆分数据导入外部数据filedata 二、参数化实现的方式 1、读取元组数据一定要和单元测试框架一起用importunittest,osfromddtimportddt,data,unpack,filedataNO。1单组元素ddtclassTestwork(unittest。TestCase):data(1,2,3)deftest01(self,value):value用来接收data的数据print(value)ifnamemain:unittest。main()结果:123NO。2多组未分解元素ddtclassTestwork(unittest。TestCase):data((1,2,3),(4,5,6))deftest01(self,value):print(value)ifnamemain:unittest。main()结果:(1,2,3)(4,5,6)NO。3多组分解元素ddtclassTestwork(unittest。TestCase):data((1,2,3),(4,5,6))unpack拆分数据deftest01(self,value1,value2,value3):每组数据有3个值,所以设置3个形参print(value)ifnamemain:unittest。main()结果:123456 2、读取列表数据importunittest,osfromddtimportddt,data,unpack,filedataNO。1多组元素未分解ddtclassTestwork(unittest。TestCase):data(〔{name:lili,age:12},{sex:male,job:teacher}〕)deftest01(self,a):print(a)ifnamemain:unittest。main()结果:〔{name:lili,age:12},{sex:male,job:teacher}〕上面结果可以看出:无法运用到requests数据请求中,所以不是很实用NO。2多组元素分解ddtclassTestwork(unittest。TestCase):data(〔{name:lili,age:12},{sex:male,job:teacher}〕)unpackdeftest01(self,a,b):print(a,b)ifnamemain:unittest。main()结果:{name:lili,age:12}{sex:male,job:teacher}拆分后的运行结果,不带有〔〕,拆分是将列表中的2个字典拆分,所以有2个数据 3、读取字典数据importunittest,osfromddtimportddt,data,unpack,filedata字典的读取比较特殊,因为在拆分的时候,形参和实参的key值要一致,否则就报错NO。1单组数据未分解ddtclassTestwork(unittest。TestCase):data({name:lili,age:16},{sex:female,job:nurser})deftest01(self,a):print(a)ifnamemain:unittest。main()结果:{name:lili,age:16}{sex:female,job:nurser}以上运行的结果数据,就可以用来作为requests的请求参数!NO。2多数据拆分,重点来了ddtclassTestwork(unittest。TestCase):data({name:lili,age:16},{name:female,age:nurser})unpackdeftest01(self,name,age):print(name,age)ifnamemain:unittest。main()结果:lili16femalenurser重点来了:首先结果展示的数据是字典里的value,没有打印key的值;其次data里的数据key值和def方法里的形参名称一定要一致,否则,打印的时候,就会报莫名的参数错误。 4、读取json文件数据datajson。json文件{testcase1:{key:value1,statuscode:200},testcase2:{key:value2,statuscode:200},testcase3:{key:value3,statuscode:200}}python读取json文件ddtclassInterfaceTest(unittest。TestCase):defsetUp(self):self。urlhttp:httpbin。orggetdeftearDown(self):print(self。result)filedata(datajson。json)如不在同一级目录下需另做处理deftestgetrequest(self,key,statuscode):rrequests。get(self。url,params{key:key})self。resultr。json()self。assertEqual(r。statuscode,statuscode)ifnamemain:unittest。main()