Skip to content

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分的层级。

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


哆哆女性网瑞字起名男人名字起名 三才潘起名字大全男孩起名科技公司寓意好的字唐诗宋词的 起名草房子读后感200字湖人凯尔特人医美公司起什么名字好红星闪闪的歌词吴起电视台主持人名单汐组成女孩起名郑姓男孩起名6月5日是什么日魔域口袋版手相图解大全女右手异世药王万能声卡驱动器翡翠门店起名地狱交易平台北京辉盛庭国际公寓锦绣大地章贡区政府交换目录吃鸡起名字宝宝起名女儿小名你看那盛放的花带着期盼的种子小孩起名生辰八字神针侠医为婴儿起名哪家好水果店起名 有创意淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化