文章目录
- 一、上机内容(单元测试)
- 二、简单计算机测试
- 1、题目
- 2、编码(源代码)
- 3、HTMLTestRunner生成可视化报告
- 4、coverage查看覆盖情况
- 三、基本覆盖路径法测试
- 1、题目
- 2、编码(源代码)
- 3、复读 🐔
- 四、三角形问题测试
- 1、题目
- 2、编码(源代码)
- 3、复读复读🐔
一、上机内容(单元测试)
我是一个一个喜欢开摆的懒猫罢(悲)
希望能HELP
缩短这不必要的一小时甚至半小时,多抽出点时间打电动捏 😋
二、简单计算机测试
1、题目
2、编码(源代码)
编写test_cal.py文件:
当然,你是需要HTMLTestRunner.py和Cal.py文件滴:😋
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()函数
3、HTMLTestRunner生成可视化报告
把HTMLTestRunner.py塞到lib目录:
有beyond喜欢在本地添加但是不知道python路径在哪是吧(怒)| 打开cmd—输入python进入命令行,输入这两行代码:
运行记得选择test_cal.py,不要用默认的pytest或unittest运行 😰:
生成了res1.html文件:①pycharm右上角有浏览器打开 ②右键在资源管理器中点开它(Open in=》Exploer)
4、coverage查看覆盖情况
安装😺:cmd命令行切换到python里scripts目录,输入pip
install coverage:
进入python命令行,输入import coverage,成功导入:
输入coverage html -d report 生成report文件夹:
打开index.html 🧐
三、基本覆盖路径法测试
1、题目
2、编码(源代码)
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()
3、复读 🐔
和第一个做法一样捏 😴
年轻人给我发了两张截图,我一看,原来是HTMLTestRunner可视化报告和coverage覆盖率: 😹
四、三角形问题测试
1、题目
2、编码(源代码)
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()
3、复读复读🐔
和第二个做法一样捏 😴
年轻人给我发了两张截图,我一看,原来是HTMLTestRunner可视化报告和coverage覆盖率: 😹