目錄
一、python代碼判斷三角形類型
二、使用pytest測(cè)試代碼
三、生成allure測(cè)試報(bào)告
一、python代碼判斷三角形類型
寫代碼之前首先我們要知道滿足三角形的條件:
前提條件:三角形邊長(zhǎng)都為大于0的數(shù)字
構(gòu)成三角形:兩邊之和大于第三邊 即 a+b >c? and a+c>b and? b+c>a? ?(此三個(gè)條件需要同時(shí)滿足)
滿足構(gòu)成三角形之后,要考慮構(gòu)成三角形的類型:
三角形分為:直角三角形、等腰三角形、等邊三角形、不規(guī)則三角形(鈍角三角形、銳角三角形)?
直角三角形:兩邊平方和等于第三邊 即 a^2 + b^2 =c^2? or??b^2 +?c^2 =?a^2? ?or??a^2 + c^2?=?b^2(此三個(gè)條件滿足一個(gè)即可)
等腰三角形:三邊任意兩邊相等 即? a=b != c? ? ?or? ?b=c != a? ? ?or? ? ?a=c!=b? (此三條件滿足一個(gè)即可)
等邊三角形:三邊相等? ?即? a= b= c??
不規(guī)則三角形就是不滿足上述特殊三角形的情況
下面是代碼 :
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: # 判斷是否是個(gè)三角形
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: # 以上三個(gè)都不符合
return ("此三角形為不規(guī)則三角形")
else: # 不是三角形的
return ("這構(gòu)不成三角形")
else:
return ("非法輸入")
二、使用pytest測(cè)試代碼
寫代碼之前,我們首先要寫好測(cè)試用例,下面是寫好的用例:
pytest是python用來做自動(dòng)化測(cè)試的一個(gè)框架,需要事先下載使用,沒有下載的,可以先去自行搜索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('不規(guī)則三角形用例')
@allure.title('滿足 a + b > c的不規(guī)則三角形')
# 不規(guī)則三角形
def test_09():
test9 = sanjiaoxing(a=4, b=9, c=7) # 不是特殊三角形,但滿足 a + b > c
print(test9)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test9
@allure.feature('不規(guī)則三角形用例')
@allure.title('滿足 c + b > a的不規(guī)則三角形')
def test_10():
test10 = sanjiaoxing(a=7, b=4, c=9) # 不是特殊三角形,但滿足 c + b > a
print(test10)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test10
@allure.feature('不規(guī)則三角形用例')
@allure.title('滿足 a + c > b的不規(guī)則三角形')
def test_11():
test11 = sanjiaoxing(a=9, b=7, c=4) # 不是特殊三角形,但滿足 a + c > b
print(test11)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test11
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + b < c 兩邊之和小于第三邊 構(gòu)不成三角形')
# 構(gòu)不成三角形 (兩邊之和小于第三邊)
def test_12():
test12 = sanjiaoxing(a=1, b=2, c=5) # a + b < c 兩邊之和小于第三邊 構(gòu)不成三角形
print(test12)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test12
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + c < b 兩邊之和小于第三邊 構(gòu)不成三角形')
def test_13():
test13 = sanjiaoxing(a=2, b=1, c=5) # a + c < b 兩邊之和小于第三邊 構(gòu)不成三角形
print(test13)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test13
@allure.feature('構(gòu)不成三角形用例')
@allure.title('b + c < a 兩邊之和小于第三邊 構(gòu)不成三角形')
def test_14():
test14 = sanjiaoxing(a=5, b=1, c=2) # b + c < a 兩邊之和小于第三邊 構(gòu)不成三角形
print(test14)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test14
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + b = c 兩邊之和等于第三邊 構(gòu)不成三角形')
# 構(gòu)不成三角形 (兩邊之和等于第三邊)
def test_15():
test15 = sanjiaoxing(a=1, b=2, c=3) # a + b = c 兩邊之和等于第三邊 構(gòu)不成三角形
print(test15)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test15
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + c = b 兩邊之和等于第三邊 構(gòu)不成三角形')
def test_16():
test16 = sanjiaoxing(a=2, b=1, c=3) # a + c = b 兩邊之和等于第三邊 構(gòu)不成三角形
print(test16)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test16
@allure.feature('構(gòu)不成三角形用例')
@allure.title(' c + b = a 兩邊之和等于第三邊 構(gòu)不成三角形')
def test_17():
test17 = sanjiaoxing(a=3, b=1, c=2) # c + b = a 兩邊之和等于第三邊 構(gòu)不成三角形
print(test17)
if __name__ == '__main__':
assert "構(gòu)不成三角形" 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 為負(fù)數(shù)')
def test_19():
test19 = sanjiaoxing(a=-1, b=-1, c=-1) # a b c 為負(fù)數(shù) 非法輸入
print(test19)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test19
代碼中的@allure.feature、@allure.title是allure-pytest模塊要使用的,后面會(huì)講解到。
三、生成allure測(cè)試報(bào)告
Allure 是在 Pytest 執(zhí)行完生成的測(cè)試數(shù)據(jù)的基礎(chǔ)上,對(duì)測(cè)試數(shù)據(jù)進(jìn)行處理統(tǒng)計(jì),生成格式統(tǒng)一、美觀的測(cè)試報(bào)告。
上面代碼用到了@allure.feature、@allure.title ,其中@allure.feature是用例的大目錄,@allure.title是用例的標(biāo)題。
要想生成allure測(cè)試報(bào)告,我們需要加下面代碼:
if __name__ == '__main__':
# 執(zhí)行pytest單元測(cè)試,生成 Allure 報(bào)告需要的數(shù)據(jù)存在 /Triangeleresult 目錄
pytest.main(['TriangeleUnitTesting.py','--alluredir','./Triangeleresult'])
# 執(zhí)行命令 allure generate ./Triangeleresult -o ./Triangelereport --clean ,生成測(cè)試報(bào)告
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: # 判斷是否是個(gè)三角形
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: # 以上三個(gè)都不符合
return ("此三角形為不規(guī)則三角形")
else: # 不是三角形的
return ("這構(gòu)不成三角形")
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('不規(guī)則三角形用例')
@allure.title('滿足 a + b > c的不規(guī)則三角形')
# 不規(guī)則三角形
def test_09():
test9 = sanjiaoxing(a=4, b=9, c=7) # 不是特殊三角形,但滿足 a + b > c
print(test9)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test9
@allure.feature('不規(guī)則三角形用例')
@allure.title('滿足 c + b > a的不規(guī)則三角形')
def test_10():
test10 = sanjiaoxing(a=7, b=4, c=9) # 不是特殊三角形,但滿足 c + b > a
print(test10)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test10
@allure.feature('不規(guī)則三角形用例')
@allure.title('滿足 a + c > b的不規(guī)則三角形')
def test_11():
test11 = sanjiaoxing(a=9, b=7, c=4) # 不是特殊三角形,但滿足 a + c > b
print(test11)
if __name__ == '__main__':
assert "不規(guī)則三角形" in test11
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + b < c 兩邊之和小于第三邊 構(gòu)不成三角形')
# 構(gòu)不成三角形 (兩邊之和小于第三邊)
def test_12():
test12 = sanjiaoxing(a=1, b=2, c=5) # a + b < c 兩邊之和小于第三邊 構(gòu)不成三角形
print(test12)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test12
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + c < b 兩邊之和小于第三邊 構(gòu)不成三角形')
def test_13():
test13 = sanjiaoxing(a=2, b=1, c=5) # a + c < b 兩邊之和小于第三邊 構(gòu)不成三角形
print(test13)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test13
@allure.feature('構(gòu)不成三角形用例')
@allure.title('b + c < a 兩邊之和小于第三邊 構(gòu)不成三角形')
def test_14():
test14 = sanjiaoxing(a=5, b=1, c=2) # b + c < a 兩邊之和小于第三邊 構(gòu)不成三角形
print(test14)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test14
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + b = c 兩邊之和等于第三邊 構(gòu)不成三角形')
# 構(gòu)不成三角形 (兩邊之和等于第三邊)
def test_15():
test15 = sanjiaoxing(a=1, b=2, c=3) # a + b = c 兩邊之和等于第三邊 構(gòu)不成三角形
print(test15)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test15
@allure.feature('構(gòu)不成三角形用例')
@allure.title('a + c = b 兩邊之和等于第三邊 構(gòu)不成三角形')
def test_16():
test16 = sanjiaoxing(a=2, b=1, c=3) # a + c = b 兩邊之和等于第三邊 構(gòu)不成三角形
print(test16)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test16
@allure.feature('構(gòu)不成三角形用例')
@allure.title(' c + b = a 兩邊之和等于第三邊 構(gòu)不成三角形')
def test_17():
test17 = sanjiaoxing(a=3, b=1, c=2) # c + b = a 兩邊之和等于第三邊 構(gòu)不成三角形
print(test17)
if __name__ == '__main__':
assert "構(gòu)不成三角形" 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 為負(fù)數(shù)')
def test_19():
test19 = sanjiaoxing(a=-1, b=-1, c=-1) # a b c 為負(fù)數(shù) 非法輸入
print(test19)
if __name__ == '__main__':
assert "構(gòu)不成三角形" in test19
if __name__ == '__main__':
# 執(zhí)行pytest單元測(cè)試,生成 Allure 報(bào)告需要的數(shù)據(jù)存在 /Triangeleresult 目錄
pytest.main(['TriangeleUnitTesting.py','--alluredir','./Triangeleresult'])
# 執(zhí)行命令 allure generate ./Triangeleresult -o ./Triangelereport --clean ,生成測(cè)試報(bào)告
os.system('allure generate ./Triangeleresult -o ./Triangelereport --clean')
執(zhí)行之后可以看到生成了Triangeleresult 和Triangelereport文件夾,此時(shí)打開Triangelereport文件夾,找到index.html 右鍵找到 open in? -->找到Browser 選擇瀏覽器打開即可打開測(cè)試報(bào)告。
allure報(bào)告:
可以看到?@allure.feature、@allure.title分的層級(jí)。
以上就是所有內(nèi)容,本人小白一個(gè),寫的不好,請(qǐng)各位的大佬多多指教 。各位看官,看完多多點(diǎn)贊!文章來源:http://www.zghlxwxcb.cn/news/detail-451191.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-451191.html
到了這里,關(guān)于python代碼實(shí)現(xiàn)判斷三角形類型,使用pytest進(jìn)行代碼測(cè)試,生成allure測(cè)試報(bào)告的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!