python3 应用 nose_parameterized 实现unittest 参数化
2024-09-23 22:02:09
一、读取变量的值,实现unittest 参数化
import nose_parameterized,unittest def calc(a:int,b:int):
return a+b
case_data =[
[10,20,30],
[12,21,33],
[15,21,36]
]
class MyClass(unittest.TestCase):
@nose_parameterized.parameterized.expand(case_data)
def test_compare(self,a,b,expect):
actual = calc(int(a),int(b))
self.assertEqual(actual,expect)
if __name__ == '__main__':
unittest.main()
定义了一个二维数组case_data,用来存值,使用时直接在test方法上方加
@nose_parameterized.parameterized.expand(case_data)
最后可以得到以下测试结果,说明测试成功。
同样,也可以将case_date定义为下面的形式,也可以实现unittest参数化。
case_data =[
(10,20,30),
(12,21,33),
(15,21,36)
]
二、读取文件的方式,实现unittest 参数化
@nose_parameterized.parameterized.expand(case_date) 这句中的case_data,
只要写个函数,从文件格式读取的每一行放到一个list里,生成一个二维数组,,将这个二维数组赋给case_data就可以了。
如下所示,调用类DataToParam中的text方法,从 case_data.txt 生成一个二维数组。
@nose_parameterized.parameterized.expand(DataToParam.text('case_data.txt'))
下面是读取txt文件的函数封装在类DataToParam 里, 要读取excel的话,可以在DataToParam里再加一个读取excel的函数,然后把判断文件单独拎出来,放一个函数里,这样可以公用。
class DataToParam(object):
@staticmethod
def text(filename,seq=','):
if os.path.isfile(filename):
with open(filename,encoding='utf-8') as f:
res = []
for line in f:
res.append(line.strip().split(seq))
return res
else:
raise Exception('参数化文件不存在!') #主动抛出异常 print(DataToParam.text('case_data.txt'))
最新文章
- Python第一天 - 函数
- mysql:SQL语句操作数据库中表和字段的COMMENT值
- 山东理工大学第七届ACM校赛-最大收益问题 分类: 比赛 2015-06-26 10:25 51人阅读 评论(0) 收藏
- 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph
- delphi中计算指定日期是该月第几周的函数
- yii user 组件
- java多线程总结一:线程的两种创建方式及优劣比较
- mybati的存储过程
- 12.06 JavaScript
- jmeter之beanshell提取json数据
- Oracle的order by的中文排序问题
- 爬坑系列----Redis查询key报空指针异常,而redis中确实存在该key
- linux 使用 vim 玩python
- SpringBoot自动配置源码调试
- Snowflake Snow Snowflakes POJ - 3349 Hash
- 用python连接mysql失败总结
- Hibernate.编写xml文件无自动提示信息
- Shader中ColorMask的使用
- nyoj847 S + T(贪心)
- JavaIo编程基础复习