好,让我们接着上节遗留的2个bug来进行解决。先来搞定那个小的,也就是bdgl的显示问题。
前端显示:
这样就可以了,多个组合之间有。然后就剩下这个大bug了- 顺序错乱。让我们再次回到这个恶心的算法中:
仔细观察,可以看到
顺序,在filter的时候 还是正常的。但是在wugo的时候 就已经毁了。
毁了的原因有俩种:
- set()方法变成集合后 用交集差集这些方法,已经混乱了顺序。
- 任意删除后 又结尾添加的方式 也让这些顺序 混乱了。
所以我们如果想从这里着手,让其全程保持顺序正确,几乎不太可能,必然要付出惨重代价,而且可能会引发新的更严重的bug。
一个没有办法的办法是,我们在结尾,增加一层算法。这层算法来矫正顺序。不过代价是执行时间会稍微多那么几毫秒。好处是简单,安全。
直接去找到res 添加这个new_zuhe 新组合的代码,我们给new_zuhe 添加一层顺序校验功能,即可!
现在来思考,如何给new_zuhe进行顺序矫正。
首先我们拿到原始正确的输入条件顺序,也就只能从new_values中拿到:
如上图输出,有俩组有效组合。我们再次用到列表推导,拿到正确顺序:
复制版本:
new_tmp = [list(set(nv).intersection(set(new_zuhe)))[0] for nv in new_values if set(nv).intersection(set(new_zuhe))]
看看输出:
可以看到,顺序已经纠正过来了~然后替换下这个进入res的最终新组合:
前端结果:
可以看到,已经成功解决 了这个顺序排列问题。
最后我们再稍稍优化一下显示的交互,每次点击运行都清楚这个 被动过滤无辜组合 的文案。
到这里,这个番外功能算是彻底解决了。其实并不属于接口测试平台的功能,属于测试领域底层理论的突破与实际应用。