接口测试平台番外-正交工具6

2022-05-19 10:30:40 浏览数 (1)

正交工具目前有个小瑕疵:就是在添加输入条件的时候,会自动复制第一行的数据。这是因为我们之前js代码中仅进行了复制,并没有对其数据进行清空导致。

所以我们在这里加上这俩句即可:

现在每次添加的都是新的了~

关于导出到excel功能,有些粉丝说想把这个导出到excel表,以便再把这个excel表导入到公司自己的用例管理平台。

(用例管理平台 基本都支持 excel导入。我们的正交或者之后的用例生成类小工具也都支持把结果导出到excel中。但是这里有个问题,就是不同的用例平台需要的excel格式是完全不一样的。我们的教程又不可能会对所有平台进行兼容,所以这里只讲如何导出excel的最简单的核心代码逻辑,请小伙伴自行根据公司用例管理平台的导入格式进行改动~)

首先在zhengjiao.html中加入 这个导出到excel的按钮。

然后去写对应的js

这个excel函数要做什么呢?其实就是提取页面生成的结果,然后给到后台,后台再写入到excel中,前端再配合去自动下载到使用者电脑即可。

我们先提取结果:

这里我们的提取方式有几种:

  1. 提取dom里的实际值。 把这些输入框都统计好。
  2. 直接提取运行后生成的那个二维数组。
  3. 直接复制运行功能的代码,进入后台后重新运行,并把结果变成excel而不是返回给前端,这个好处是简单,并且无需先运行。

按照已有的方法,我们选第三种。简单有效:

所以代码完全复制即可,但是需要改动给到后端的url 和 接受返回值的动作函数。

代码如下:

然后去urls.py中映射:

然后去后台新建:

大家可以看到,这部分代码和运行的是基本一样的。这里当然没有写完,得到的这个res就是一个二维数组,也就是我们需要写到excel中的。

打印一下看看:

开始讲如何导出到excel

首先是python写入excel有什么方法:

  1. 利用xlrd等
  2. 利用win32com.clent 等

这里不用想,肯定是xlrd方法:

xlrd 大家可以直接pip下载,尽量下载全面:

然后在views_tools.py头部进行导入:

代码临时如下:

完成后,我们运行一下看看:

果然在我们项目根目录位置出现了这个xls表格,那么我们打开看看:

可以看到已经成功写入进来了。不过这里我们看着有点别扭,是因为我们没有把输入条件的名字 加进来。

所以我们进行优化,在前端js函数开始,把这个end_keys给传过来:

然后是python代码:

此时我们在运行看看结果

这次就带上了 输入条件的名字了~

到这并没有结束。因为此时我们生成的 excel 是在服务器上,用户自己的电脑是看不到这个excel的。所以我们最后还需要把这个自动下载给用户。

这里我们需要了解一个事情,就是前后端配合用来下载资源文件的方法方式非常非常多,各有千秋。我下面会用一种最简单 但是不是最好的方法进行下载。大家也可以之后去搜索其他各种方法进行下载文件。

1.先把文件生成位置改到static中:

代码语言:javascript复制
# 正交工具导出
def zhengjiao_excel(request):
    end_keys = request.GET['end_keys'].split(',')
    end_values = request.GET['end_values'].split(',')
    new_values = [i.split('/') for i in end_values]
    res = []
    for i in AllPairs(new_values):
        res.append(i)
    # 先创建
    wqrf_book = xlwt.Workbook(encoding='utf-8') # 创建excel
    wqrf_sheet = wqrf_book.add_sheet("正交结果") # 创建sheet页
    for i in range(len(res)):
        case_index = '用例:' str(i 1) # 用例序号
        hb = list(zip(end_keys,res[i])) #把key和value进行合并
        case = ','.join([':'.join(list(i)) for i in hb]) #进行格式化,便于阅读
        wqrf_sheet.write(i,0,case_index)  # 写入,i为行,0为第一例
        wqrf_sheet.write(i, 1, case)  # 写入,i为行,1为第二例
    wqrf_book.save('MyApp/static/tmp_zhengjiao.xls') #保存

    return HttpResponse('')

然后前端我们的返回处理中只需要加一句:

这就是直接请求我们静态文件的方法~

然后我们重启服务,刷新页面测试:

可以看到成功下载了。

然后我们去自己下载目录找到它并打开:

可以看到已经成功实现了功能。

非常好用,这个套路~

0 人点赞