接口测试:框架分析设计(四)编写框架驱动程序

一、驱动执行程序,思路
由简到繁:采用defaultTestLoader的discover方法的方式,加载测试文件,进行独立文件执行。
顺序:
驱动执行一个测试文件->驱动执行两个或多个测试文件->驱动执行不同运行状态(是否执行)的测试文件->按照指定顺序驱动执行->按照顺序和是否执行的命令,编写完整的驱动程序

V1:驱动执行一个测试文件

import unittest
if __name__ == '__main__':
    #指定需要运行的脚本路径
    test_path = 'G:\PycharmProjects\InterFaceFrameWork\Script\Inde_Interface_Script'
    #创建discoer对象,传入文件路径和文件名
    discover = unittest.defaultTestLoader.discover(test_path,pattern='test_Login.py')
    #创建运行对象
    runner = unittest.TextTestRunner()
    runner.run(discover)

V2:读取文件信息方式,驱动执行一个或多个文件

import csv
import unittest

if __name__ == '__main__':
    file_reader = open('G:\PycharmProjects\InterFaceFrameWork\Config\cogfig1.csv','r')
    table = csv.reader(file_reader)
    next(file_reader)
    for row in table:
        discover = unittest.defaultTestLoader.discover(row[0],pattern=row[1])
        #print(row)
        #创建运行对象
        runner = unittest.TextTestRunner()
        runner.run(discover)

V3:驱动执行不同运行状态(是否执行)的测试文件

import csv
import unittest
if __name__ == '__main__':
    file_reader = open('G:\PycharmProjects\InterFaceFrameWork\Config\cogfig1.csv','r')
    table = csv.reader(file_reader)
    next(file_reader)
    for row in table:
        if row[2]=="yes":
            discover = unittest.defaultTestLoader.discover(row[0],pattern=row[1])
            #print(row)
            #创建运行对象
            runner = unittest.TextTestRunner()
            runner.run(discover)

V4:驱动按照不同的顺序执行脚本

(一)问题一:数字顺序问题,思路:
读取csv文件排序的数字,放入字典中。再通过字典中的排序函数进行排序,然后依次读取排序后字典中的数据执行脚本。
(1)需要导入类库文件:import operator
(2)使用的排序函数:sorted()

排序代码:

    #对数据字典进行排序
    dict = {'testD':'1','testA':'5','testE':'4','testC':'3','testB':'2',}
    new_data = sorted(dict.items(),key=operator.itemgetter(0)) #按照key值排序
    new_data1 = sorted(dict.items(), key=operator.itemgetter(1)) #按照value值排序
    print(new_data)
    print(new_data1)

输出:

[('testA', '5'), ('testB', '2'), ('testC', '3'), ('testD', '1'), ('testE', '4')]
[('testD', '1'), ('testB', '2'), ('testC', '3'), ('testE', '4'), ('testA', '5')]

(二)问题二:
字典只能存放key和value。csv驱动文件中,脚本和路径是分两列保存的,这样无法读取并保存路径信息。
解决:
用字典列表的数据格式,加入路径信息,就可以保存

    #加入路径进行排序
    dic_list = [{'testA':"D:\\python\\pro","num":"3"},{'testB':'D:\\python\\pro',"num":"2"},{'testC':'D:\\python\\pro',"num":"1"}]
    new3 = sorted(dic_list,key=operator.itemgetter('num'))
    print(new3)
    #取得路径
    for i in range(0,3):
        num = 0
        for content in new3[i].items():
            if num == 0:
                print(content[0])
                print(content[1])
                num = num+1

运行结果:

[{'testC': 'D:\\python\\pro', 'num': '1'}, {'testB': 'D:\\python\\pro', 'num': '2'}, {'testA': 'D:\\python\\pro', 'num': '3'}]
testC
D:\python\pro
testB
D:\python\pro
testA
D:\python\pro

(三)问题三:把配置文件的数据,读取的字典列表中

dict = {}
    list = []
    file_reader = open('G:\PycharmProjects\InterFaceFrameWork\Config\cogfig1.csv','r')
    table = csv.reader(file_reader)
    next(file_reader)
    for row in table:
        dict = {}
        dict[row[1]] = row[0]
        dict['num'] = row[3]
        print(dict)
        list.append(dict)
    print(list)

执行结果:

[{'test_Login.py': 'G:\\PycharmProjects\\InterFaceFrameWork\\Script\\Inde_Interface_Script', 'num': '1'}, {'test_Forget_Get_Question.py': 'G:\\PycharmProjects\\InterFaceFrameWork\\Script\\Inde_Interface_Script', 'num': '2'}, {'test_Forget_Check_Answer.py': 'G:\\PycharmProjects\\InterFaceFrameWork\\Script\\Inde_Interface_Script', 'num': '3'}]

V4总结:按照指定的顺序执行测试脚本,按顺序打印出路径和脚本
在这里插入图片描述

import csv
import operator
import unittest
if __name__ == '__main__':
    #把配置文件的数据,存放到字典中
    dict = {}
    dict_list = []
    file_reader = open('G:\PycharmProjects\InterFaceFrameWork\Config\cogfig1.csv','r')
    table = csv.reader(file_reader)
    next(file_reader)
    for row in table:
        dict = {}
        dict[row[1]] = row[0]
        dict['num'] = row[3]
        #print(dict)
        dict_list.append(dict)
    #print(dict_list)
    #加入路径排序
    new_list = sorted(dict_list, key=operator.itemgetter('num'))
    #print(new_list)
    # 取得路径
    for i in range(0, 3):
        num = 0
        for content in new_list[i].items():
            if num == 0:
                #跳过,不读num
                num = num + 1
                path = content[1]
                file = content[0]
                print('path:'+path)
                print('file:'+file)

执行结果:

path:G:\PycharmProjects\InterFaceFrameWork\Script\Inde_Interface_Script
file:test_Forget_Check_Answer.py
path:G:\PycharmProjects\InterFaceFrameWork\Script\Inde_Interface_Script
file:test_Login.py
path:G:\PycharmProjects\InterFaceFrameWork\Script\Inde_Interface_Script
file:test_Forget_Get_Question.py
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值