有没有哪个人会这个555

完成以下函数的用例设计和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的样子。

  • 测试
    x, y, no = 45, 56, 9 # 输出 2511
    x, y, no = 4, 5, 13 # 输出 0
    x, y, no = 23, 23, 9 # 输出 520