目录
一、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分的层级。
以上就是所有内容,本人小白一个,写的不好,请各位的大佬多多指教 。各位看官,看完多多点赞!