我是一个一个喜欢开摆的懒猫罢(悲)
希望能HELP
缩短这不必要的一小时甚至半小时,多抽出点时间打电动捏
Cal.py:
class calculator:
a=10
b=20
def add(self):
return self.a+self.b
def sub(self):
return self.a-self.b
def multipy(self):
return self.a*self.b
def divide(self):
try:
return self.a/self.b
except ZeroDivisionError:
return("除数不能为0")
test_cal.py:
import HTMLTestRunner
import unittest
from unittest import TestCase
import Cal as cal
class TestCalculator(TestCase):
def setUp(self):
self.calObject=cal.calculator()
def test_add(self):
result=self.calObject.add()
self.assertEqual(result,30)
def test_sub(self):
result = self.calObject.sub()
self.assertEqual(result, -10)
def test_multipy(self):
result = self.calObject.multipy()
self.assertEqual(result, 200)
def test_divide(self):
self.calObject.b=0
result = self.calObject.divide()
self.assertEqual(result, '除数不能为0')
def suite():
calTestCase=unittest.TestSuite()
calTestCase.addTest(TestCalculator('test_add'))
calTestCase.addTest(TestCalculator('test_sub'))
calTestCase.addTest(TestCalculator('test_multipy'))
calTestCase.addTest(TestCalculator('test_divide'))
return calTestCase
if __name__=="__main__":
fp=open('res1.html','wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='简单计算机的测试',description='详情')
runner.run(suite())
print('测试')
fp.close()
HTMLTestRunner.py:太长了,话说老师不是会给滴么
代码的意思就是说,判断预期结果和实际结果相同不,利用assertEqual()函数
把HTMLTestRunner.py塞到lib目录:
有beyond喜欢在本地添加但是不知道python路径在哪是吧(怒)| 打开cmd—输入python进入命令行,输入这两行代码:
运行记得选择test_cal.py,不要用默认的pytest或unittest运行 :
生成了res1.html文件:①pycharm右上角有浏览器打开 ②右键在资源管理器中点开它(Open in=》Exploer)
安装:cmd命令行切换到python里scripts目录,输入pip
install coverage:
进入python命令行,输入import coverage,成功导入:
输入coverage html -d report 生成report文件夹:
打开index.html
function.py:
def function(a,b,c):
if((a>1)and(b==0)):
c=c/a
if((a==5)or(c>1)):
c=c+1
c=a+b+c
return c
function_test.py:
import HTMLTestRunner
import unittest
import function as fun
from unittest import TestCase
class TestFunction(TestCase):
def setUp(self) -> None:pass
def test_1(self):
result=fun.function(1,2,1)
self.assertEqual(result,4)
def test_2(self):
result=fun.function(1,2,2)
self.assertEqual(result,6)
def test_3(self):
result=fun.function(5,2,1)
self.assertEqual(result,9)
def test_4(self):
result = fun.function(5, 0, 1)
self.assertEqual(result, 6.2)
def test_5(self):
result = fun.function(5, 0, 5)
self.assertEqual(result, 7)
def suite():
calTestCase=unittest.TestSuite()
calTestCase.addTest(TestFunction('test_1'))
calTestCase.addTest(TestFunction('test_2'))
calTestCase.addTest(TestFunction('test_3'))
calTestCase.addTest(TestFunction('test_4'))
calTestCase.addTest(TestFunction('test_5'))
return calTestCase
if __name__=="__main__":
fp=open('res2.html','wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='基本路径覆盖法',description='详情')
runner.run(suite())
print('测试')
fp.close()
和第一个做法一样捏
年轻人给我发了两张截图,我一看,原来是HTMLTestRunner可视化报告和coverage覆盖率:
triangle.py:
def triangleStyletest(a,b,c):
if(a<=0 or b<=0 or c<=0 or a+b<=c or a+c<=b or c+c<=a):
return "无法构成三角形"
elif(a==b and a==c and b==c):
return "构成等边三角形"
elif(a==b or a==c or b==c):
return "构成等腰三角形"
else:
return "构成不等边三角形"
triangle_test.py:
import HTMLTestRunner
import unittest
import triangle as tri
from unittest import TestCase
class TestTriangle(TestCase):
def setUp(self) -> None:pass
def test_1(self):
result=tri.triangleStyletest(1,1,1)
self.assertEqual(result,'构成等边三角形')
def test_2(self):
result = tri.triangleStyletest(3, 4, 5)
self.assertEqual(result, '构成不等边三角形')
def test_3(self):
result = tri.triangleStyletest(4, 5, 11)
self.assertEqual(result, '无法构成三角形')
def test_4(self):
result = tri.triangleStyletest(2, 3, 2)
self.assertEqual(result, '构成等腰三角形')
def suite():
calTestCase=unittest.TestSuite()
calTestCase.addTest(TestTriangle('test_1'))
calTestCase.addTest(TestTriangle('test_2'))
calTestCase.addTest(TestTriangle('test_3'))
calTestCase.addTest(TestTriangle('test_4'))
return calTestCase
if __name__=="__main__":
fp=open('res3.html','wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='三角问题进行单元测试',description='详情')
runner.run(suite())
print('测试')
fp.close()
和第二个做法一样捏
年轻人给我发了两张截图,我一看,原来是HTMLTestRunner可视化报告和coverage覆盖率: