pythonunittest模块_Python模块unittest

Python自带一个单元测试框架,unittest模块,用它来做单元测试,它里面封装好了一些校验返回结果的方法和一些用例执行前的初始化操作

在说unittest之前,先说几个概念:

TestCase:测试用例

TestSuite:多个测试用例集合在一起

TestLoader:用来加载TestCase到TestSuite

TestRunner:执行测试用例,测试的结果保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

import unittest

class MyTest(unittest.TestCase): # 继承unittest.TestCase

def tearDown(self):

# 每个测试用例执行之后做操作

print('111')

def setUp(self):

# 每个测试用例执行之前做操作

print('22222')

@classmethod

def tearDownClass(self):

# 必须使用 @ classmethod装饰器, 所有test运行完后运行一次

print('4444444')

@classmethod

def setUpClass(self):

# 必须使用@classmethod 装饰器,所有test运行前运行一次

print('33333')

def test_a_run(self):

self.assertEqual(1, 1) # 测试用例

def test_b_run(self):

self.assertEqual(2, 2) # 测试用例

if __name__ == '__main__':

unittest.main()#运行所有的测试用例

下面是一些常用的断言,也就是校验结果

assertEqual(a, b) a == b

assertNotEqual(a, b) a != b

assertTrue(x) bool(x) is True

assertFalse(x) bool(x) is False

assertIsNone(x) x is None

assertIsNotNone(x) x is not None

assertIn(a, b) a in b

assertNotIn(a, b) a not in b

HTMLTestRunner模块,可以生成测试报告,这个模块需要自己安装,使用执行测试用例就会生成一个HTML的测试报告,里面会有每个测试用例的执行结果,

import HTMLTestRunner

import unittest

class MyTest(unittest.TestCase):#继承unittest.TestCase

def tearDown(self):

#每个测试用例执行之后做操作

print('111')

def setUp(self):

#每个测试用例执行之前做操作

print(22222)

def test_run(self):

# self.assertEqual(1,1)

self.assertIs(1,1)

#测试用例

def test_run2(self):

# self.assertEqual(1,1)

self.assertIs(1,1)

#测试用例

def test_run3(self):

# self.assertEqual(1,1)

self.assertIs(1,1)

#测试用例

def test_run1(self):

# self.assertEqual(1,1)

self.assertIs(1,1)

#测试用例

if __name__ == '__main__':

test_suite = unittest.TestSuite()#创建一个测试集合

test_suite.addTest(MyTest('test_run1'))#测试套件中添加测试用例

#test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的测试方法

fp = open('res.html','wb')#打开一个保存结果的html文件

runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api测试报告',description='测试情况')

#生成执行用例的对象

runner.run(test_suite)

#执行测试套件

如果我们有多个模块,每个模块下都写了很多Python文件,每个Python文件里面都有测试用例,那怎么把这个目录下的用例都执行呢,就是要先找到这个目录下的所有Python文件,然后找到里面的测试用例,逐个执行

import unittest,HTMLTestRunner

suite = unittest.TestSuite()#创建测试套件

all_cases = unittest.defaultTestLoader.discover('.','test_*.py')

#找到某个目录下所有的以test开头的Python文件里面的测试用例

for case in all_cases:

suite.addTests(case)#把所有的测试用例添加进来

fp = open('res.html','wb')

runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='all_tests',description='所有测试情况')

runner.run(suite)

#运行测试

我们在后续进行持续集成的时候,要让代码自动运行,就会用到Jenkins了,但是上面产生的测试报告都是HTML格式的,Jenkins不认识,就在Jenkins里面显示不出来。那就要生成Jenkins认识的测试报告,Jenkins认识XML格式的报告,那就产生XML格式的报告,这就需要新的模块,xmlrunner,安装直接pip install xmlrunner

import unittest

import xmlrunner

#导入这个模块

class My(unittest.TestCase):

def test1(self,a,b,c):

self.assertEqual(a+b,c)

if __name__=='__main__':

test_suite = unittest.TestSuite()

test_suite.addTest(unittest.makeSuite(My))

runner = xmlrunner.XMLTestRunner(output='report')#指定报告放的目录

runner.run(test_suite)

运行之后,就会在report目录生成XML格式的测试报告了,还自动添加了日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值