python: unittest
pip3 install parameterized
pip3 install pytest
pip3 install pytest-html
pip3 install coverage
pip3 install html-testRunner
import unittest
import unittest.mock
import unittest.loader
import unittest.case
from unittest.mock import MagicMock
import sys
import webbrowser
class SomeWork(object):
"""
"""
def initenv(self):
"""
:return:
"""
print("初始化环境")
def clearenv(self):
"""
:return:
"""
print("清理环境配置")
@staticmethod
def workPad():
""""""
print("工作中")
class Test(unittest.TestCase):
"""
"""
somework = None
someWork = None
@classmethod
def setUpClass(cls):
"""
:return:
"""
cls.somework = SomeWork()
cls.somework.initenv()
cls.someWork=SomeWork
def testcase(self):
"""
:return:
"""
self.somework.initenv()
print("this is case")
def testcase2(self):
"""
:return:
"""
self.someWork.workPad()
#SomeWork.workPad()
print("this is case2")
@classmethod
def tearDownClass(cls):
"""
:return:
"""
#cls.somework()
cls.someWork
def main(self, out=sys.stderr, verbosity=2):
"""
:param out:
:param verbosity:
:return:
"""
loader = unittest.TestLoader()
suite = loader.loadTestsFromModule(sys.modules[__name__])
unittest.TextTestRunner(out, verbosity=verbosity).run(suite)
if __name__ == '__main__':
# 写入报告
with open('testclass.txt', 'w') as f:
t=Test()
t.main(f)
#os.system(r'notepad testclass.txt')
webbrowser.open('testclass.txt',new=0,autoraise=True) #打开文档
unittest.main()
# encoding: utf-8
# 版权所有 2024 涂聚文有限公司
# 许可信息查看:
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# Datetime : 2024/10/12 6:29
# User : geovindu
# Product : PyCharm
# Project : TechnologyGame
# File : cal.py
# explain : 学习
__metaclass_=type
class calculator(object):
"""
"""
def __init__(self,a:int,b:int):
self._numa=a
self._numb=b
@property
def numa(self):
"""
:return:
"""
return self._numa
@numa.setter
def numa(self,a:int):
"""
:param a:
:return:
"""
self._numa=a
@property
def numb(self):
"""
:return:
"""
return self._numb
@numb.setter
def numb(self,b:int):
"""
:param b:
:return:
"""
self._numb=b
def Add(self):
"""
:return:
"""
return self._numa+self._numb
def Subs(self):
"""
:return:
"""
return self._numa-self._numb
def Multiply(self):
"""
:return:
"""
return self._numa*self._numb
def Divide(self):
"""
:return:
"""
try:
return self._numa/self._numb
except ZeroDivisionError:
print('zero division errror')
return 0
# encoding: utf-8
# 版权所有 2024 涂聚文有限公司
# 许可信息查看:
# 描述: pip3 install parameterized pip3 install pytest pip3 install pytest-html pip3 install coverage pip3 install html-testRunner
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# Datetime : 2024/10/12 6:29
# User : geovindu
# Product : PyCharm
# Project : TechnologyGame
# File : testcal.py
# explain : 学习
import unittest
import unittest.mock
import unittest.loader
import unittest.case
from unittest.mock import MagicMock
import sys
import os
from cal import calculator
import webbrowser
import HTMLTestRunner
import asyncio
class calulatorUnittest(unittest.TestCase):
"""
单元测麻
"""
def setUp(self) -> None:
"""
:return:
"""
print('Test Start')
def testBase(self):
"""
:return:
"""
j = calculator(4, 2)
self.assertEquals(j.Add(),6)
self.assertEquals(j.Subs(),2)
self.assertEquals(j.Multiply(),8)
self.assertEquals(j.Divide(),2)
def testMaxNumber(self):
"""
:return:
"""
j = calculator(9223372036854775808, 9223372036854775808)
self.assertEquals(j.Multiply(), 850705591730234615865843651865843651857942052864)
mydata = [[4, 2, 2], [2, 4, -2], [4, 4, 0]]
n = 0
for i in mydata:
j = calculator(mydata[n][0], mydata[n][1])
self.assertEquals(j.Multiply(), mydata[n][2])
n += 1
def testMultiply(self):
"""
:return:
"""
mydata = [[4, 2, 8], [4, -2, -8], [-4, -4, 16],[-5,5,-25]]
n = 0
judge = True
for i in mydata:
j = calculator(mydata[n][0], mydata[n][1])
self.assertEquals(j.Multiply(), mydata[n][2])
n += 1
def testDivide(self):
"""
:return:
"""
j = calculator(4, 0)
self.assertEquals(j.Divide(),0)
def tearDown(self) -> None:
"""
:return:
"""
print('Test End')
def main(self, out=sys.stderr, verbosity=2):
"""
:param out:
:param verbosity:
:return:
"""
loader = unittest.TestLoader()
suite = loader.loadTestsFromModule(sys.modules[__name__])
unittest.TextTestRunner(out, verbosity=verbosity).run(suite)
class calulatorTestCase(unittest.TestCase):
"""
"""
cals = None
@classmethod
def setUpClass(cls):
"""
:return:
"""
cls.cals = calculator(4,2)
def testcaseBase(self):
"""
:return:
"""
self.cals = calculator(4, 2)
self.cals.Add()
self.cals.Subs()
self.cals.Multiply()
self.cals.Divide()
self.cals.Add = MagicMock()
self.cals.Subs = MagicMock()
self.cals.Multiply = MagicMock()
self.cals.Divide = MagicMock()
print('Add')
def testcaseMaxNumber(self):
"""
:return:
"""
self.cals=calculator(9223372036854775808, 9223372036854775808)
self.cals.Multiply()
self.cals.Multiply = MagicMock()
print('Subs')
def testcaseMultiply(self):
"""
:return:
"""
mydata = [[4, 2, 8], [4, -2, -8], [-4, -4, 16], [-5, 5, -25]]
n = 0
judge = True
for i in mydata:
self.cals = calculator(mydata[n][0], mydata[n][1])
self.cals.Multiply()
self.cals.Multiply = MagicMock()
n += 1
print('Multiply')
def testcaseDivide(self):
"""
:return:
"""
self.cals = calculator(4, 0)
self.cals.Divide()
self.cals.Divide = MagicMock()
print('Divide')
@classmethod
def tearDownClass(cls):
"""
"""
cls.cal()
@classmethod
def main(cls, out=sys.stderr, verbosity=2):
"""
:param out:
:param verbosity:
:return:
"""
loader = unittest.TestLoader()
suite = loader.loadTestsFromModule(sys.modules[__name__])
unittest.TextTestRunner(out, verbosity=verbosity).run(suite)
async def writehtml():
"""
寫入報告 html
"""
suite = unittest.TestSuite()
suite.addTest(calulatorUnittest("testBase"))
suite.addTest(calulatorUnittest("testMaxNumber"))
suite.addTest(calulatorUnittest("testMultiply"))
suite.addTest(calulatorUnittest("testDivide"))
suite.addTest(calulatorTestCase("testcaseBase"))
suite.addTest(calulatorTestCase("testcaseMaxNumber"))
suite.addTest(calulatorTestCase("testcaseMultiply"))
suite.addTest(calulatorTestCase("testcaseDivide"))
# 1
#runner = unittest.TextTestRunner()
#runner.run(suite)
# 2
filepath='testcal.html'
fp=open(filepath,'wb')
#寫入報告 html
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'cal.py test report',author='涂聚文',description=u'unit test case')
runner.run(suite)
fp.close()
webbrowser.open('testcal.html',new=0, autoraise=True) #open html file
async def writetext():
"""
寫入報告 txt
"""
if os.path.exists('testcal.txt'):
with open('testcal.txt', 'w') as f:
t = calulatorUnittest()
t.main(f)
else:
with open('testcal.txt', 'a') as f:
t = calulatorTestCase()
t.main(f)
webbrowser.open('testcal.txt',new=0, autoraise=True)
unittest.main()
if __name__ == '__main__':
"""
"""
yn=input("write html file: Y/N?")
if yn=='Y' or yn=='y':
# 寫入報告 html
asyncio.run(writehtml())
else:
# 寫入報告 txt
asyncio.run(writetext())


哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号