• 测试脚本-通过csv文件调用脚本(可以按照num的顺序进行调用)-unittest


    一、语法

    1.字典内容调用顺序

    1. # 一、对数据字典的内容进行排序
    2. # 字典数据是只有两个属性,一个是key一个是value
    3. import operator
    4. dic={"testA":3,"testC":1,"testB":4,"testD":2}
    5. # 如果是要对key进行排序,itemgetter里面是0,如果是对value进行排序,itemgetter里面是1
    6. dicn=sorted(dic.items(),key=operator.itemgetter(1))
    7. print(dicn)
    8. # 排完序之后把脚本取出来,如果fn下是0的话,就是把key打印出来,如果是1,就是把value打印出来
    9. for fn in dicn:
    10. print(fn)
    11. print(fn[0])
    12. print(fn[1])

    2.列表里的字典排序

    1. # 二、定义一个列表,列表里面放多个字典,1个字典里面放两个字典数据,一个字典数据是文件名跟路径名,另一个
    2. # 字典是排序的参数和排序参数的值,有多少个脚本就有多少个字典,然后按照每个字典里面的排序参数进行排序
    3. import operator
    4. dicta=[{'testA':'d:\\aa\\bb','num':3},{'testB':'d:\\aa\\bb','num':2}
    5. ,{'testC':'d:\\aa\\bb','num':1}]
    6. # 对列表里的字典内容排序
    7. # for content in dic[i],这里的content打印的是每个字典数据的key,如果
    8. # 加上.items(),那这里的content就是打印每个字典里面的key跟values
    9. dic1=sorted(dicta,key=operator.itemgetter('num'))
    10. # print('排序后的列表',dic1)
    11. for i in range(0,3):
    12. # print(dic1[i])
    13. n=0
    14. for content in dic1[i].items():
    15. # print(content)
    16. if n==0:
    17. print(content[0])
    18. print(content[1])
    19. n=n+1

    二、.将配置文件中的数据放入到字典中,测试套运行配置文件中的脚本

    1. # 把配置文件中的内容输入到字典中,进行排序
    2. # 打开配置文件
    3. import csv
    4. import operator
    5. import unittest
    6. file=open('D:\PythonLearn\\framefour\config\config1.csv','r')
    7. # 读取配置文件
    8. rows=csv.reader(file)
    9. n=0
    10. dict={}
    11. list=[]
    12. for row in rows:
    13. if n>0:
    14. # 把列表里面的每一行数据放到字典中
    15. # 这边为什么要给一个空的字典
    16. dict={}
    17. # 如果往列表里面追加字典,字典参数如果是一样的就会被覆盖,所以每遍历一组数据,就要把字典数据清空,之前遍历
    18. # 的一组数据会逐个打印到列表中
    19. dict[row[1]]=row[0]
    20. dict['num']=int(row[3])
    21. # print(dict)
    22. list.append(dict)
    23. n=n+1
    24. # print(list)
    25. # 然后是对这个list列表里的字典进行排序
    26. lista=sorted(list,key=operator.itemgetter('num'))
    27. print(lista)
    28. # 再是到lista列表里面,把每一个字典的上的第一组内容打印出来
    29. for i in range(0,4):
    30. n=0
    31. for content in lista[i].items():
    32. if n==0:
    33. # print(content[0])
    34. # print(content[1])
    35. filename=content[0]
    36. filepath=content[1]
    37. print('文件名',filename,'路径名',filepath)
    38. # 调用脚本程序
    39. suite=unittest.defaultTestLoader.discover(filepath,pattern=filename)
    40. # 定义一个运行对象
    41. runner=unittest.TextTestRunner()
    42. # 运行这个定义的对象
    43. runner.run(suite)
    44. n=n+1

    三、统计csv中的行数,然后把行数传给遍历列表字典的range范围,然后按照state来判断是否调用脚本

    1. # v5.0把所有配置文件中的内容进行读取
    2. import unittest
    3. import csv
    4. import operator
    5. if __name__ == '__main__':
    6. # 打开对应的配置文件,进行读取
    7. # 以只读方式打开
    8. file=open("D:\PythonLearn\\framefour\config\config1.csv","r")
    9. table=csv.reader(file)
    10. # line=len(open("D:\PyrhonLearn\interfacefram\config\config1.csv").readlines())
    11. # print(line)
    12. dic={}
    13. listd=[]
    14. line=0
    15. for row in table:
    16. # print(row[0])
    17. if line>0:
    18. # 把文件中读取的数据放入字典
    19. dic={}
    20. dic[row[1]]=row[0]
    21. dic["num"]=int(row[3])
    22. # 把脚本的运行状态加入字典数据
    23. dic["state"]=row[2]
    24. # print(dic)
    25. line=line+1
    26. if dic!={}:
    27. listd.append(dic)
    28. print("n行数=",line)
    29. # print(listd)
    30. dicn=sorted(listd,key=operator.itemgetter("num"))
    31. # print(dicn)
    32. # n=0是指遍历每个字典中的第一组内容
    33. # n=1是指遍历每个字典中的第二组内容
    34. # n=2是指遍历每个字典中的第三组内容
    35. # range范围里面的line是遍历csv文件的行数
    36. for i in range(0,line-1):
    37. n=0
    38. for content in dicn[i].items():
    39. if n==0:
    40. # print(content)
    41. # 这里的content0是指key,content1是指value
    42. fname=content[0]
    43. fdir=content[1]
    44. # print("fname",fname, "fdir",fdir)
    45. if n==2:
    46. # print(content)
    47. state=content[1]
    48. # print("state",state)
    49. if state=="Yes":
    50. # 调用脚本程序进行执行
    51. print("最终运行的程序",fname)
    52. discover=unittest.defaultTestLoader.discover(fdir,pattern=fname)
    53. # 定义一个运行对象
    54. runner=unittest.TextTestRunner()
    55. runner.run(discover)
    56. n=n+1

  • 相关阅读:
    Spring实战之Bean的主要装配机制之一-通过Java代码显示装配bean
    亚马逊第三大卖家国家巴基斯坦电商营商环境如何?且看跨境电商数字身份验证服务商ADVANCE.AI要参解析
    调用API接口的一些注意技巧
    java毕业设计中国民航酒店分销系统Mybatis+系统+数据库+调试部署
    【java web】自己捣鼓的班级随机点名(html+servlet)
    架构基本概念和架构本质
    Python asyncore模块-客户端
    Roson的Qt之旅 #117 QTcpSocket和QUdpSocket详细介绍
    基于SSM+Vue的汽车售票网站的设计与实现
    spring boot 下载resources下的静态文件为流格式
  • 原文地址:https://blog.csdn.net/weixin_47547541/article/details/126958756