正交工具目前有个小瑕疵:就是在添加输入条件的时候,会自动复制第一行的数据。这是因为我们之前js代码中仅进行了复制,并没有对其数据进行清空导致。
所以我们在这里加上这俩句即可:
现在每次添加的都是新的了~
关于导出到excel功能,有些粉丝说想把这个导出到excel表,以便再把这个excel表导入到公司自己的用例管理平台。
(用例管理平台 基本都支持 excel导入。我们的正交或者之后的用例生成类小工具也都支持把结果导出到excel中。但是这里有个问题,就是不同的用例平台需要的excel格式是完全不一样的。我们的教程又不可能会对所有平台进行兼容,所以这里只讲如何导出excel的最简单的核心代码逻辑,请小伙伴自行根据公司用例管理平台的导入格式进行改动~)
首先在zhengjiao.html中加入 这个导出到excel的按钮。
然后去写对应的js
这个excel函数要做什么呢?其实就是提取页面生成的结果,然后给到后台,后台再写入到excel中,前端再配合去自动下载到使用者电脑即可。
我们先提取结果:
这里我们的提取方式有几种:
- 提取dom里的实际值。 把这些输入框都统计好。
- 直接提取运行后生成的那个二维数组。
- 直接复制运行功能的代码,进入后台后重新运行,并把结果变成excel而不是返回给前端,这个好处是简单,并且无需先运行。
按照已有的方法,我们选第三种。简单有效:
所以代码完全复制即可,但是需要改动给到后端的url 和 接受返回值的动作函数。
代码如下:
然后去urls.py中映射:
然后去后台新建:
大家可以看到,这部分代码和运行的是基本一样的。这里当然没有写完,得到的这个res就是一个二维数组,也就是我们需要写到excel中的。
打印一下看看:
开始讲如何导出到excel
首先是python写入excel有什么方法:
- 利用xlrd等
- 利用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('')
然后前端我们的返回处理中只需要加一句:
这就是直接请求我们静态文件的方法~
然后我们重启服务,刷新页面测试:
可以看到成功下载了。
然后我们去自己下载目录找到它并打开:
可以看到已经成功实现了功能。
非常好用,这个套路~