#自测的过程就是单元测试
#自己写一些测试的代码,来测试自己写的代码功能看看有没有实现
import unittest
def add(a,b):
return a+b
class AddTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setUPclass')
@classmethod
def setUp(self):#执行前都i要执行他,每条用例
print('setUp')
def tearDown(self):#每条用例执行之后都要执行他
print('tearDown')
def test_ces(self):
result=add(1,1)
self.assertAlmostEqual(2,result)
def test_cesr(self):
result=add(1,1)
self.assertAlmostEqual(1,result,'结果计算错误')
self.assertIn(1,[1,2,3,4])#判断是否再找个数组里
# self.assertFalse()
# self.assertTrue()#assert是断言校验结果对不对的
#用例运行顺序按照函数妹子开头来的
#为什么能self.因为父类里面有继承了testcase
# unittest.main()#他会识别当前python文件所有测试用例帮你运行
#出现in就不要写这行代码
#产生测试报告不要用这种方法运行不加unittest.main()
#如果选了点右上角run...运行
#用它识别所有的测试用例自动识别出来
测试报告
把HTMLrunner放到这里
运行这样运行
#test case
#testsuite#用例集合
#testrunner#运行测试用例
#testloader#查找测试用例
import unittest,HTMLTestRunner
def add(a,b):
return a+b
class AddTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setUPclass')
@classmethod
def setUp(self):#执行前都i要执行他,每条用例
print('setUp')
def tearDown(self):#每条用例执行之后都要执行他
print('tearDown')
def test_ces(self):
result=add(1,1)
self.assertAlmostEqual(2,result)
def test_cesr(self):
result=add(1,1)
self.assertAlmostEqual(1,result,'结果计算错误')
self.assertIn(1,[1,2,3,4])#判断是否再找个数组里
file=open('report.html','wb')#放到那个文件
runner=HTMLTestRunner.HTMLTestRunner(file,title='测试报告')#标题
test_suite=unittest.makeSuite(AddTest)#make方法找到用例变成测试集合,自动把test开头加进去
runner.run(test_suite)#runner运行找个测试用例的集合,死用法
file.close()
结果可以复制路径和用浏览器打开查看
第二种产生测试报告方法
#test case
#testsuite#用例集合
#testrunner#运行测试用例
#testloader#查找测试用例
import unittest,HTMLTestRunner,BeautifulReport
def add(a,b):
return a+b
class AddTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setUPclass')
@classmethod
def setUp(self):#执行前都i要执行他,每条用例
print('setUp')
def tearDown(self):#每条用例执行之后都要执行他
print('tearDown')
def test_ces(self):
result=add(1,1)
self.assertAlmostEqual(2,result)
def test_cesr(self):
result=add(1,1)
self.assertAlmostEqual(1,result,'结果计算错误')
self.assertIn(1,[1,2,3,4])#判断是否再找个数组里
test_suite=unittest.makeSuite(AddTest)#make方法找到用例变成测试集合,自动把test开头加进去
report=BeautifulReport.BeautifulReport(test_suite)
report.report(filename='bf_report.html',description='测试报告')
report.report(filename='bf_report.html',description='测试报告',log_path='C:/Users/v-dongchunguang/Desktop')
log_path路径写哪里测试报告产生再那里
如果想要检验一个参数化的测试报告接口的应该这样写
import parameterized,unittest,BeautifulReport
#实现数据驱动 十条用例就说十条数据
#代码驱动 用例全都是你写代码实现的
#关键字驱动
data=[['admin','123456',True,'正常登录'],
['admin','1122',True,'异常登录'],['admin','1111',False,'黑名单用户登录']]
def Login(user,password):
if user=='admin'and password=='123456':
return True
return False
class LoginTest(unittest.TestCase):
@parameterized.parameterized.expand(data)
def test_Login(self,user,password,expect,desc):
'''登录用例'''
self._testMethodDoc=desc
result=Login(user,password)
self.assertEqual(expect,result)#判断
bf=BeautifulReport.BeautifulReport(unittest.makeSuite(LoginTest))
bf.report(filename='11-17测试报告',description='接口测试报告')
返回的true和false 如果正常的就会返回成功的如果不是正常的就会返回失败