码迷,mamicode.com
首页 > 其他好文 > 详细

unittest单元测试框架教程7-unittest.TestSuite类详解

时间:2020-09-03 16:41:42      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:from   ram   style   display   需要   实现   result   框架   deb   

unittest.TestSuite类表示各个测试用例和测试套件的集合。该类提供测试运行程序所需的接口,以使其能够像其他任何测试用例一样运行。运行TestSuite实例与遍历套件(分别运行每个测试用例)相同。

unittest.TestSuite(tests =())参数tests必须是单个测试用例或其他最初用于构建套件的测试套件的可迭代项。稍后提供了其他方法来将测试用例和套件添加到集合中。

TestSuite对象的行为与TestCase对象非常相似,不同之处在于它们实际上并未实现测试。相反,它们用于将测试聚合到应一起运行的测试组中。可以使用一些其他方法将测试用例添加到TestSuite对象

 

addTest(test)

addTests(iter(test))

TestCase添加TestSuite到套件。

例:

class TestAdd(unittest.TestCase):

def setUp(self):
self.a = 1
self.b = 2

def tearDown(self):
print(self.a)
print(self.b)


def test_add1(self):
‘‘‘测试加法程序‘‘‘
headers = {
‘Content-Type‘: "application/json",
}
reqdata = {‘a‘:self.a,‘b‘:self.b}
resp = requests.request(method=‘POST‘, url=‘http://127.0.0.1:8000/testapi/add/‘, verify=False, headers=headers, json=reqdata)
# warnings.warn(‘这是个警告‘, category=None, stacklevel=1, source=None)
resp = json.loads(resp.text)
self.assertEqual(resp[‘status‘],1)
self.assertEqual(‘请求成功‘,resp[‘message‘])
self.assertEqual(resp[‘data‘], self.a + self.b)
return resp[‘data‘]

def test_minus(self):
‘‘‘测试减法程序‘‘‘
headers = {
‘Content-Type‘: "application/json",
}
reqdata = {‘a‘:self.a,‘b‘:self.b}
resp = requests.request(method=‘POST‘, url=‘http://127.0.0.1:8000/testapi/minus/‘, verify=False, headers=headers, json=reqdata)
resp = json.loads(resp.text)
self.assertEqual(resp[‘status‘],1)
self.assertEqual(resp[‘message‘], ‘请求成功‘)
self.assertEqual(resp[‘data‘], self.a - self.b)
return resp[‘data‘]

def test_chengfa(self):
‘‘‘测试乘法程序‘‘‘
headers = {
‘Content-Type‘: "application/json",
}
reqdata = {‘a‘:self.a,‘b‘:self.b}
resp = requests.request(method=‘POST‘, url=‘http://127.0.0.1:8000/testapi/chengfa/‘, verify=False, headers=headers, json=reqdata)
resp = json.loads(resp.text)
self.assertEqual(resp[‘status‘],1)
self.assertEqual(resp[‘message‘], ‘请求成功‘)
self.assertEqual(resp[‘data‘], self.a * self.b,msg=‘乘法程序错误‘)
return resp[‘data‘]

def test_chufa(self):
‘‘‘测试除法程序‘‘‘
self.b = 0
headers = {
‘Content-Type‘: "application/json",
}
reqdata = {‘a‘:self.a,‘b‘:self.b}
resp = requests.request(method=‘POST‘, url=‘http://127.0.0.1:8000/testapi/chengfa/‘, verify=False, headers=headers, json=reqdata)
resp = json.loads(resp.text)
self.assertEqual(resp[‘status‘],1)
self.assertEqual(resp[‘message‘], ‘请求成功‘)
self.assertEqual(resp[‘data‘], self.a / self.b)
return resp[‘data‘]
suite = unittest.TestSuite()
suite.addTest(TestAdd(test_add1))
print(suite)

输出一个测试用例的测试套件

<unittest.suite.TestSuite tests=[<testmath.TestAdd testMethod=test_add1>]>

 

run(result)

运行与此套件相关的测试,将结果收集到作为result传递的测试结果对象中。请注意,不同于 TestCase.run()TestSuite.run()需要传递结果对象。

result = unittest.TestResult()
unittest.registerResult(result)
suite = unittest.TestSuite()
suite.addTest(TestAdd(‘test_add1‘))
suite.addTest(TestAdd(‘test_chengfa‘))
testresult = suite.run(result)
print(testresult)

1
2
1
2
<unittest.result.TestResult run=2 errors=0 failures=1>

 

debug()

运行与此套件相关的测试,而不收集结果。这允许将测试引发的异常传播到调用方,并可用于支持在调试器下运行测试。模式与testcase相同不重复介绍。

 

countTestCases()

返回此测试对象表示的测试数量,包括所有单个测试和套件。

print(TestAdd(test_chengfa).countTestCases())
loader = unittest.TestLoader()
suite = loader.loadTestsFromTestCase(TestAdd)
print(suite.countTestCases())
suite.addTest(TestAdd(test_chengfa))
print(suite.countTestCases())

分别是1,4,5

unittest单元测试框架教程7-unittest.TestSuite类详解

标签:from   ram   style   display   需要   实现   result   框架   deb   

原文地址:https://www.cnblogs.com/zerotest/p/13554510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!