前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台番外-正交工具6

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

作者头像
我去热饭
发布2022-05-19 10:30:40
6370
发布2022-05-19 10:30:40
举报
文章被收录于专栏:测试开发干货

正交工具目前有个小瑕疵:就是在添加输入条件的时候,会自动复制第一行的数据。这是因为我们之前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('')

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

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

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

可以看到成功下载了。

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

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

非常好用,这个套路~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档