wordpress电商建站,465端口 WordPress,外包公司有前途吗,江苏连云港网站建设公司1、前言
在我们写功能用例时#xff0c;常常会遇到多个参数有很多的选项#xff0c;而如果想把这些参数值都要覆盖执行的话#xff0c;工作量可想而知。那有没有什么办法既可以减少用例数量#xff0c;也可以保证用例质量又降低测试时间成本#xff0c;本篇将介绍一款工具…
1、前言
在我们写功能用例时常常会遇到多个参数有很多的选项而如果想把这些参数值都要覆盖执行的话工作量可想而知。那有没有什么办法既可以减少用例数量也可以保证用例质量又降低测试时间成本本篇将介绍一款工具 allpairspy可以满足此需求。
2、简介
allpairspy 是一个用 Python 编写的开源测试组合生成器。生成器允许你使用“成对组合”方法创建一组测试将变量组合的数量减少到涵盖大多数情况的较小集合中。
特点
1、生成足够好的数据集。
2、Python 迭代器风格的枚举接口。
3、允许在搜索下一个组合时过滤掉“无效”组合。
安装依赖
Python 2.7 或 3.5
安装命令
pip install allpairspy
除了 allpairspy还有很多成对测试工具
https://www.pairwise.org/tools.html
例如 Pairwise Pict Online在线生成成对测试工具
https://pairwise.yuuniworks.com/
参数数据与限制条件 在线生成后的结果 有关成对测试的更多信息请参阅
http://www.pairwise.org
3、基本用途
如代码所示参数里有5组数据每组数据有不同的参数如果按照全量的组合那么就是2*4*2*4*5320条用例。通过引用 allpairspy 包来创建成对组合。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号咖啡加剁椒
from allpairspy import AllPairsparameters [[X品牌, Y品牌],[Windows10, Windows11, macOS, Ubuntu],[有线网络, 无线网络],[按天, 按周, 按月, 按年],[6, 10, 15, 30, 60]
]print(PAIRWISE:)
for i, pairs in enumerate(AllPairs(parameters)):print({:2d}: {}.format(i1, pairs))通过执行后的结果可以看出 allpairspy 将用例条数缩减至22条。 4、过滤
有些时候参数的某个特定值与其他参数值之间的组合是无效的这个时候就应该排除这个组合。
代码里可以通过在 AllPairs 构造函数中将过滤函数设置为 filter_func 来限制对。
如代码所示设置了3个过滤条件。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号咖啡加剁椒from allpairspy import AllPairsdef is_valid_combination(row):这是一个过滤功能筛选函数应返回True如果组合有效则为False否则为Falsen len(row)if n 1:# Y品牌不支持Windows10if Windows10 row[1] and Y品牌 row[0]:return False# X品牌不支持Ubuntuif Ubuntu row[1] and X品牌 row[0]:return Falseif n 4:# 按年要大于30分钟进行计算if 按年 row[3] and row[4] 30:return Falsereturn Trueparameters [[X品牌, Y品牌],[Windows10, Windows11, macOS, Ubuntu],[有线网络, 无线网络],[按天, 按周, 按月, 按年],[6, 10, 15, 30, 60]
]print(PAIRWISE:)
for i, pairs in enumerate(AllPairs(parameters, filter_funcis_valid_combination)):print({:2d}: {}.format(i1, pairs))
通过执行后的结果可以看出设置过滤后用例条数缩减至15条 5、有序字典
当输入的参数为字典时可以使用 collections.OrderedDict 实例作为 AllPairs 构造函数的参数对作为 collections.namedtuple 实例返回。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号咖啡加剁椒from collections import OrderedDict
from allpairspy import AllPairsparameters OrderedDict({品牌: [X品牌, Y品牌],操作系统: [Windows10, Windows11, macOS, Ubuntu],分钟: [15, 30, 60]
})print(PAIRWISE:)
for i, pairs in enumerate(AllPairs(parameters)):print({:2d}: {}.format(i1, pairs))执行后的结果。 6、使用pytest进行成对参数化测试
可以将 allpairspy 结合到单元测试框架 pytest 里进行成对参数化测试。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号咖啡加剁椒import pytest
from allpairspy import AllPairs# 使用pytest进行成对参数化测试
def function_to_be_tested(brand, operating_system, minute):# do somethingreturn Trueclass TestParameterized(object):pytest.mark.parametrize([brand, operating_system, minute], [value_list for value_list in AllPairs([[XBrand, YBrand],[Windows10, Windows11, macOS, Ubuntu],[10, 15, 30, 60]])])def test(self, brand, operating_system, minute):assert function_to_be_tested(brand, operating_system, minute)
执行命令
py.test test_parameterize.py -v
执行后的结果共生成了16条用例。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你