python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

目录

一、python代码判断三角形类型

二、使用pytest测试代码

三、生成allure测试报告

一、python代码判断三角形类型

写代码之前首先我们要知道满足三角形的条件:

前提条件:三角形边长都为大于0的数字
构成三角形:两边之和大于第三边 即 a+b >c  and a+c>b and  b+c>a   (此三个条件需要同时满足)

满足构成三角形之后,要考虑构成三角形的类型:

三角形分为:直角三角形、等腰三角形、等边三角形、不规则三角形(钝角三角形、锐角三角形) 

直角三角形:两边平方和等于第三边 即 a^2 + b^2 =c^2  or  b^2 + c^2 = a^2   or  a^2 + c^2 = b^2(此三个条件满足一个即可)

等腰三角形:三边任意两边相等 即  a=b != c     or   b=c != a     or     a=c!=b  (此三条件满足一个即可)

等边三角形:三边相等   即  a= b= c  

不规则三角形就是不满足上述特殊三角形的情况

下面是代码 :

def sanjiaoxing(a, b, c):
    if a > 0 and b > 0 and c > 0:
        if a + b > c and b + c > a and a + c > b:  # 判断是否是个三角形
            if a == b == c:  # 等边三角形判断
                return ("此三角形为等边三角形")
            elif a == b != c or b == c != a or a == c != b:  # 等腰三角形判断
                return ("此三角形为等腰三角形")
            elif (a * a + b * b == c * c) or (a * a + c * c == b * b) or (b * b + c * c == a * a):  # 直角三角形判断
                return ("此三角形为直角三角形")
            else:  # 以上三个都不符合
                return ("此三角形为不规则三角形")
        else:  # 不是三角形的
            return ("这构不成三角形")
    else:
        return ("非法输入")

二、使用pytest测试代码

写代码之前,我们首先要写好测试用例,下面是写好的用例:

pytest是python用来做自动化测试的一个框架,需要事先下载使用,没有下载的,可以先去自行搜索pytest的用法。

下面是三角形用例的代码:

@allure.feature('等腰三角形用例')
@allure.title('a b 两边相等')
# 等腰三角形用例
def test_01():
    test1 = sanjiaoxing(a=4, b=4, c=5)  # a,b 两边相等
    print(test1)
    if __name__ == '__main__':
        assert "等腰三角形" in test1

@allure.feature('等腰三角形用例')
@allure.title('a c 两边相等')
def test_02():
    test2 = sanjiaoxing(a=4, b=5, c=4)  # a,c 两边相等
    print(test2)
    if __name__ == '__main__':
        assert "等腰三角形" in test2

@allure.feature('等腰三角形用例')
@allure.title('c b 两边相等')
def test_03():
    test3 = sanjiaoxing(a=5, b=4, c=4)  # c,b 两边相等
    print(test3)
    if __name__ == '__main__':
        assert "等腰三角形" in test3

@allure.feature('等边三角形用例')
@allure.title('a b c 三边相等')
# 等边三角形用例
def test_04():
    test4 = sanjiaoxing(a=6, b=6, c=6)  # a,b,c 三边相等
    print(test4)
    if __name__ == '__main__':
        assert "等边三角形" in test4

@allure.feature('直角三角形用例')
@allure.title('a平方 + b平方 = c平方')
# 直角三角形用例
def test_05():
    test5 = sanjiaoxing(a=3, b=4, c=5)  # a平方 + b平方 = c平方 直角三角形
    print(test5)
    if __name__ == '__main__':
        assert "直角三角形" in test5

@allure.feature('直角三角形用例')
@allure.title('c平方 + b平方 = a平方')
def test_06():
    test6 = sanjiaoxing(a=5, b=4, c=3)  # c平方 + b平方 = a平方 直角三角形
    print(test6)
    if __name__ == '__main__':
        assert "直角三角形" in test6

@allure.feature('直角三角形用例')
@allure.title('a平方 + c平方 = b平方')
def test_07():
    test7 = sanjiaoxing(a=3, b=5, c=4)  # a平方 + c平方 = b平方 直角三角形
    print(test7)
    if __name__ == '__main__':
        assert "直角三角形" in test7

@allure.feature('直角三角形用例')
@allure.title('c平方 + b平方 = a平方')
def test_08():
    test8 = sanjiaoxing(a=50000000, b=40000000, c=30000000)  # c平方 + b平方 = a平方 直角三角形
    print(test8)
    if __name__ == '__main__':
        assert "直角三角形" in test8

@allure.feature('不规则三角形用例')
@allure.title('满足 a + b > c的不规则三角形')
# 不规则三角形
def test_09():
    test9 = sanjiaoxing(a=4, b=9, c=7)  # 不是特殊三角形,但满足 a + b > c
    print(test9)
    if __name__ == '__main__':
        assert "不规则三角形" in test9

@allure.feature('不规则三角形用例')
@allure.title('满足 c + b > a的不规则三角形')
def test_10():
    test10 = sanjiaoxing(a=7, b=4, c=9)  # 不是特殊三角形,但满足 c + b > a
    print(test10)
    if __name__ == '__main__':
        assert "不规则三角形" in test10

@allure.feature('不规则三角形用例')
@allure.title('满足 a + c > b的不规则三角形')
def test_11():
    test11 = sanjiaoxing(a=9, b=7, c=4)  # 不是特殊三角形,但满足 a + c > b
    print(test11)
    if __name__ == '__main__':
        assert "不规则三角形" in test11

@allure.feature('构不成三角形用例')
@allure.title('a + b < c  两边之和小于第三边 构不成三角形')
# 构不成三角形 (两边之和小于第三边)
def test_12():
    test12 = sanjiaoxing(a=1, b=2, c=5)  # a + b < c  两边之和小于第三边 构不成三角形
    print(test12)
    if __name__ == '__main__':
        assert "构不成三角形" in test12

@allure.feature('构不成三角形用例')
@allure.title('a + c < b  两边之和小于第三边 构不成三角形')
def test_13():
    test13 = sanjiaoxing(a=2, b=1, c=5)  # a + c < b  两边之和小于第三边 构不成三角形
    print(test13)
    if __name__ == '__main__':
        assert "构不成三角形" in test13

@allure.feature('构不成三角形用例')
@allure.title('b + c < a 两边之和小于第三边 构不成三角形')
def test_14():
    test14 = sanjiaoxing(a=5, b=1, c=2)  # b + c < a  两边之和小于第三边 构不成三角形
    print(test14)
    if __name__ == '__main__':
        assert "构不成三角形" in test14

@allure.feature('构不成三角形用例')
@allure.title('a + b = c 两边之和等于第三边 构不成三角形')
# 构不成三角形 (两边之和等于第三边)
def test_15():
    test15 = sanjiaoxing(a=1, b=2, c=3)  # a + b = c  两边之和等于第三边 构不成三角形
    print(test15)
    if __name__ == '__main__':
        assert "构不成三角形" in test15

@allure.feature('构不成三角形用例')
@allure.title('a + c = b 两边之和等于第三边 构不成三角形')
def test_16():
    test16 = sanjiaoxing(a=2, b=1, c=3)  # a + c = b  两边之和等于第三边 构不成三角形
    print(test16)
    if __name__ == '__main__':
        assert "构不成三角形" in test16

@allure.feature('构不成三角形用例')
@allure.title(' c + b = a 两边之和等于第三边 构不成三角形')
def test_17():
    test17 = sanjiaoxing(a=3, b=1, c=2)  # c + b = a  两边之和等于第三边 构不成三角形
    print(test17)
    if __name__ == '__main__':
        assert "构不成三角形" in test17

@allure.feature('非法输入')
@allure.title('a b c 为0')
# 非法输入
def test_18():
    test18 = sanjiaoxing(a=0, b=0, c=0)  # a b  c  为 0  非法输入
    print(test18)
    if __name__ == '__main__':
        assert "非法输入" in test18

@allure.feature('非法输入')
@allure.title('a b c 为负数')
def test_19():
    test19 = sanjiaoxing(a=-1, b=-1, c=-1)  # a  b  c  为负数  非法输入
    print(test19)
    if __name__ == '__main__':
        assert "构不成三角形" in test19

代码中的@allure.feature、@allure.title是allure-pytest模块要使用的,后面会讲解到。

三、生成allure测试报告

Allure 是在 Pytest 执行完生成的测试数据的基础上,对测试数据进行处理统计,生成格式统一、美观的测试报告。

上面代码用到了@allure.feature、@allure.title ,其中@allure.feature是用例的大目录,@allure.title是用例的标题。

要想生成allure测试报告,我们需要加下面代码:

if __name__ == '__main__':
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /Triangeleresult 目录
    pytest.main(['TriangeleUnitTesting.py','--alluredir','./Triangeleresult'])
    # 执行命令 allure generate ./Triangeleresult -o ./Triangelereport --clean ,生成测试报告
    os.system('allure generate ./Triangeleresult -o ./Triangelereport --clean')

下面是完整的代码:

import pytest,allure,os


def sanjiaoxing(a, b, c):
    if a > 0 and b > 0 and c > 0:
        if a + b > c and b + c > a and a + c > b:  # 判断是否是个三角形
            if a == b == c:  # 等边三角形判断
                return ("此三角形为等边三角形")
            elif a == b != c or b == c != a or a == c != b:  # 等腰三角形判断
                return ("此三角形为等腰三角形")
            elif (a * a + b * b == c * c) or (a * a + c * c == b * b) or (b * b + c * c == a * a):  # 直角三角形判断
                return ("此三角形为直角三角形")
            else:  # 以上三个都不符合
                return ("此三角形为不规则三角形")
        else:  # 不是三角形的
            return ("这构不成三角形")
    else:
        return ("非法输入")


@allure.feature('等腰三角形用例')
@allure.title('a b 两边相等')
# 等腰三角形用例
def test_01():
    test1 = sanjiaoxing(a=4, b=4, c=5)  # a,b 两边相等
    print(test1)
    if __name__ == '__main__':
        assert "等腰三角形" in test1

@allure.feature('等腰三角形用例')
@allure.title('a c 两边相等')
def test_02():
    test2 = sanjiaoxing(a=4, b=5, c=4)  # a,c 两边相等
    print(test2)
    if __name__ == '__main__':
        assert "等腰三角形" in test2

@allure.feature('等腰三角形用例')
@allure.title('c b 两边相等')
def test_03():
    test3 = sanjiaoxing(a=5, b=4, c=4)  # c,b 两边相等
    print(test3)
    if __name__ == '__main__':
        assert "等腰三角形" in test3

@allure.feature('等边三角形用例')
@allure.title('a b c 三边相等')
# 等边三角形用例
def test_04():
    test4 = sanjiaoxing(a=6, b=6, c=6)  # a,b,c 三边相等
    print(test4)
    if __name__ == '__main__':
        assert "等边三角形" in test4

@allure.feature('直角三角形用例')
@allure.title('a平方 + b平方 = c平方')
# 直角三角形用例
def test_05():
    test5 = sanjiaoxing(a=3, b=4, c=5)  # a平方 + b平方 = c平方 直角三角形
    print(test5)
    if __name__ == '__main__':
        assert "直角三角形" in test5

@allure.feature('直角三角形用例')
@allure.title('c平方 + b平方 = a平方')
def test_06():
    test6 = sanjiaoxing(a=5, b=4, c=3)  # c平方 + b平方 = a平方 直角三角形
    print(test6)
    if __name__ == '__main__':
        assert "直角三角形" in test6

@allure.feature('直角三角形用例')
@allure.title('a平方 + c平方 = b平方')
def test_07():
    test7 = sanjiaoxing(a=3, b=5, c=4)  # a平方 + c平方 = b平方 直角三角形
    print(test7)
    if __name__ == '__main__':
        assert "直角三角形" in test7

@allure.feature('直角三角形用例')
@allure.title('c平方 + b平方 = a平方')
def test_08():
    test8 = sanjiaoxing(a=50000000, b=40000000, c=30000000)  # c平方 + b平方 = a平方 直角三角形
    print(test8)
    if __name__ == '__main__':
        assert "直角三角形" in test8

@allure.feature('不规则三角形用例')
@allure.title('满足 a + b > c的不规则三角形')
# 不规则三角形
def test_09():
    test9 = sanjiaoxing(a=4, b=9, c=7)  # 不是特殊三角形,但满足 a + b > c
    print(test9)
    if __name__ == '__main__':
        assert "不规则三角形" in test9

@allure.feature('不规则三角形用例')
@allure.title('满足 c + b > a的不规则三角形')
def test_10():
    test10 = sanjiaoxing(a=7, b=4, c=9)  # 不是特殊三角形,但满足 c + b > a
    print(test10)
    if __name__ == '__main__':
        assert "不规则三角形" in test10

@allure.feature('不规则三角形用例')
@allure.title('满足 a + c > b的不规则三角形')
def test_11():
    test11 = sanjiaoxing(a=9, b=7, c=4)  # 不是特殊三角形,但满足 a + c > b
    print(test11)
    if __name__ == '__main__':
        assert "不规则三角形" in test11

@allure.feature('构不成三角形用例')
@allure.title('a + b < c  两边之和小于第三边 构不成三角形')
# 构不成三角形 (两边之和小于第三边)
def test_12():
    test12 = sanjiaoxing(a=1, b=2, c=5)  # a + b < c  两边之和小于第三边 构不成三角形
    print(test12)
    if __name__ == '__main__':
        assert "构不成三角形" in test12

@allure.feature('构不成三角形用例')
@allure.title('a + c < b  两边之和小于第三边 构不成三角形')
def test_13():
    test13 = sanjiaoxing(a=2, b=1, c=5)  # a + c < b  两边之和小于第三边 构不成三角形
    print(test13)
    if __name__ == '__main__':
        assert "构不成三角形" in test13

@allure.feature('构不成三角形用例')
@allure.title('b + c < a 两边之和小于第三边 构不成三角形')
def test_14():
    test14 = sanjiaoxing(a=5, b=1, c=2)  # b + c < a  两边之和小于第三边 构不成三角形
    print(test14)
    if __name__ == '__main__':
        assert "构不成三角形" in test14

@allure.feature('构不成三角形用例')
@allure.title('a + b = c 两边之和等于第三边 构不成三角形')
# 构不成三角形 (两边之和等于第三边)
def test_15():
    test15 = sanjiaoxing(a=1, b=2, c=3)  # a + b = c  两边之和等于第三边 构不成三角形
    print(test15)
    if __name__ == '__main__':
        assert "构不成三角形" in test15

@allure.feature('构不成三角形用例')
@allure.title('a + c = b 两边之和等于第三边 构不成三角形')
def test_16():
    test16 = sanjiaoxing(a=2, b=1, c=3)  # a + c = b  两边之和等于第三边 构不成三角形
    print(test16)
    if __name__ == '__main__':
        assert "构不成三角形" in test16

@allure.feature('构不成三角形用例')
@allure.title(' c + b = a 两边之和等于第三边 构不成三角形')
def test_17():
    test17 = sanjiaoxing(a=3, b=1, c=2)  # c + b = a  两边之和等于第三边 构不成三角形
    print(test17)
    if __name__ == '__main__':
        assert "构不成三角形" in test17

@allure.feature('非法输入')
@allure.title('a b c 为0')
# 非法输入
def test_18():
    test18 = sanjiaoxing(a=0, b=0, c=0)  # a b  c  为 0  非法输入
    print(test18)
    if __name__ == '__main__':
        assert "非法输入" in test18

@allure.feature('非法输入')
@allure.title('a b c 为负数')
def test_19():
    test19 = sanjiaoxing(a=-1, b=-1, c=-1)  # a  b  c  为负数  非法输入
    print(test19)
    if __name__ == '__main__':
        assert "构不成三角形" in test19


if __name__ == '__main__':
    # 执行pytest单元测试,生成 Allure 报告需要的数据存在 /Triangeleresult 目录
    pytest.main(['TriangeleUnitTesting.py','--alluredir','./Triangeleresult'])
    # 执行命令 allure generate ./Triangeleresult -o ./Triangelereport --clean ,生成测试报告
    os.system('allure generate ./Triangeleresult -o ./Triangelereport --clean')

执行之后可以看到生成了Triangeleresult 和Triangelereport文件夹,此时打开Triangelereport文件夹,找到index.html 右键找到 open in  -->找到Browser 选择浏览器打开即可打开测试报告。

allure报告:

可以看到 @allure.feature、@allure.title分的层级。

以上就是所有内容,本人小白一个,写的不好,请各位的大佬多多指教 。各位看官,看完多多点赞!

  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值