完成以下函数的用例设计和unittest单元测试:函数功能:
def add(x,y): k=0
if(x> 10):
k=x*y-No
if(y>10):
k= x*y+No
returm k
(1)设计语句覆盖用例,提交测试数据输入
(2)设计路径覆盖用例,提交测试数据输入
(3)使用单元测试执行路径覆盖用例,提交单元测试用例test函数截图
设计语句覆盖用例
语句覆盖要求每个语句至少被执行一次,根据函数的逻辑,可以设计以下用例:
输入:x=5,y=8
输出:0
输入:x=12,y=5
输出:-15
输入:x=15,y=12
输出:168
设计路径覆盖用例
路径覆盖要求覆盖所有可能的执行路径,因此需要考虑不同情况下程序执行的路径。可以设计以下用例:
输入:x=5,y=8
输出:0
输入:x=12,y=5
输出:-15
输入:x=10,y=12
输出:0
输入:x=15,y=12
输出:168
使用单元测试执行路径覆盖用例
根据以上的测试用例,可以编写对应的test函数,并使用unittest进行单元测试。具体步骤如下:
(1) 引入unittest模块,定义一个测试类 TestAddFunc。
(2) 在测试类中编写若干个测试用例函数,例如 test_statement_coverage() 和 test_path_coverage() 函数。
(3) 在每个测试用例函数中分别调用 add(x,y) 函数,将结果与预期输出进行比对,确保代码的正确性。
(4) 分别执行测试函数,生成测试报告,并截图提交。
您的代码和算法逻辑有点儿问题:
1、没有变量 No 定义,函数体内对
No 的引用必然报错。
2、您的两个判断有遗漏,当 x、y都不大于时,代码会没有运算操作,返回k之初值0。
3、当x、y都大于10时,两个条件都会执行,k值会被后一个运算重新赋值。可以用if ... elif ... 的形式修正,x、y都大于10,仅执行if语句。
4、No的命名不规范。python 中变量及函数名称一般小写,_连接单词类属性大写,类名用驼峰命名法,类方法名称遵循变量和函数命名。
#!/sur/bin/nve python
# coding: utf-8
def add(x, y):
k = 0
if x > 10:
k = x*y - no
elif y > 10:
k = x*y + no
return k
def add2(x, y):
return x*y - no if x > 10 else x*y + no if y > 10 else 0
if __name__ == '__main__':
x, y, no = 45, 56, 9
print(add2(x, y))
函数体也可以用“三元操作”语句写成add2的样子。