English 中文(简体)
UnitTest Framework - API
  • 时间:2024-03-19 02:14:58

UnitTest Framework - API


Previous Page Next Page  

本章讨论单元测试模块界定的类别和方法。 该模块有5个主要班级。

TestCase Class

这一类别的目标代表了最小的可测试单位。 检查组负责例行检查,并为每次例行准备和此后清理工作提供hoo。

测试组界定了以下方法:

Sr.No. Method & Description
1

Up()

方法要求准备试验装置。 这是在要求使用测试方法之前立即提出的。

2

tearDown()

在测试方法被称作并记录结果之后立即采用的方法。 即便测试方法提出了例外,也是如此。

3

UpClass()

在单个班级进行测试之前使用的班级方法。

4

tarDownClass()

单个班级测试后采用的一种班级方法。

5

run(result = 无>>

进行测试,将结果收集到测试结果标本上,通过result

6

在试验方法或定点时使用这种方法,可以绕过目前的试验。

7

debug()

在不收集结果的情况下进行试验。

8

shortDescription(>

恢复对测试的单线描述。

Fixtures

在测试组中可以撰写大量测试。 这些测试方法可能需要数据库连接、临时档案或初步开发的其他资源。 这些称为固定装置。 测试包括一个特别的 h,用于conf清和清理贵方检验所需的任何固定装置。 没收这些固定装置,以压倒一切。 清理,压倒一切的催泪弹。

在以下例子中,在测试Case类别中写了两项测试。 它们测试了两个价值观的增减结果。 设定法首先根据每个试验的短处描述得出了论点,在每次试验结束时将采用冲破法。

import unittest

class simpleTest2(unittest.TestCase):
   def setUp(self):
      self.a = 10
      self.b = 20
      name = self.shortDescription()
      if name == "Add":
         self.a = 10
         self.b = 20
         print name, self.a, self.b
      if name == "sub":
         self.a = 50
         self.b = 60
         print name, self.a, self.b
   def tearDown(self):
      print  
end of test ,self.shortDescription()

   def testadd(self):
      """Add"""
      result = self.a+self.b
      self.assertTrue(result == 100)
   def testsub(self):
      """sub"""
      result = self.a-self.b
      self.assertTrue(result == -10)
      
if __name__ ==  __main__ :
   unittest.main()

从指挥线上操作上述法典。 产出如下:

C:Python27>python test2.py
Add 10 20
F
end of test Add
sub 50 60
end of test sub
.
================================================================
FAIL: testadd (__main__.simpleTest2)
Add
----------------------------------------------------------------------
Traceback (most recent call last):
   File "test2.py", pne 21, in testadd
      self.assertTrue(result == 100)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.015s

FAILED (failures = 1)

Class Fixture

测试组有一套加固法,在试验组内进行个别测试之前,可以推翻。 同样,催泪弹法将在该类所有测试之后实施。 这两种方法都是等级方法。 因此,它们必须同“@emmethod”指令加以校正。

以下例子说明了这些类别方法的使用:

import unittest

class TestFixtures(unittest.TestCase):

   @classmethod
   def setUpClass(cls):
      print  called once before any tests in class 

   @classmethod
   def tearDownClass(cls):
      print  
called once after all tests in class 

   def setUp(self):
      self.a = 10
      self.b = 20
      name = self.shortDescription()
      print  
 ,name
   def tearDown(self):
      print  
end of test ,self.shortDescription()

   def test1(self):
      """One"""
      result = self.a+self.b
      self.assertTrue(True)
   def test2(self):
      """Two"""
      result = self.a-self.b
      self.assertTrue(False)
      
if __name__ ==  __main__ :
unittest.main()

TestSuite Class

甲壳体检测框架提供了一个有用的机制,根据测试的特征,可以将试验病例分类。 这一机制由测试组在单元中提供。

以下步骤涉及创建和管理试验套。

<1>Step 1——创建测试舱。

suite = unittest.TestSuite()

Step 2——在诉讼舱试验舱内添加测试。

suite.addTest(testcase class)

Step 3——你也可以使用Suite(Suite)法,从一个类别中添加测试。

suite = unittest.makeSuite(test case class)

Step 4——也可在诉讼案中添加个人测试。

suite.addTest(testcaseclass(""testmethod")

Step 5——制造试验Runner类别的物体。

runner = unittest.TextTestRunner()

Step 6——要求使用()操作方法进行所有试验

runner.run (suite)

以下方法在测试组中界定:

Sr.No. Method & Description
1

在试样中添加试验方法。

2

adds()

添加多种测试Case类别的测试。

3

run()

进行与这一诉讼有关的测试,将结果收集到测试结果物体

4

debug()

在不收集结果的情况下进行与这一诉讼有关的测试。

5

由该试验物体显示的测试次数

下面的例子说明如何使用测试舱——

import unittest
class suiteTest(unittest.TestCase):
   def setUp(self):
      self.a = 10
      self.b = 20
      
   def testadd(self):
      """Add"""
      result = self.a+self.b
      self.assertTrue(result == 100)
   def testsub(self):
      """sub"""
      result = self.a-self.b
      self.assertTrue(result == -10)
      
def suite():
   suite = unittest.TestSuite()
##   suite.addTest (simpleTest3("testadd"))
##   suite.addTest (simpleTest3("testsub"))
   suite.addTest(unittest.makeSuite(simpleTest3))
   return suite
   
if __name__ ==  __main__ :
   runner = unittest.TextTestRunner()
   test_suite = suite()
   runner.run (test_suite)

您可以尝试添加试验方法,在采用“Suite())”方法时,不配上线和发表评论。

TestLoader Class

单元测试包有测试舱级,用于制造不同班级和单元的测试套。 违约后,在单位测试时自动设立测试室。 采用主要(0)方法。 然而,一个明确的例子使得某些财产的习惯化成为可能。

在以下法典中,通过使用测试Loader物体在清单中收集了两个类别的测试。

import unittest
testList = [Test1, Test2]
testLoad = unittest.TestLoader()

TestList = []
for testCase in testList:
   testSuite = testLoad.loadTestsFromTestCase(testCase)
   TestList.append(testSuite)
   
newSuite = unittest.TestSuite(TestList)
runner = unittest.TextTestRunner()
runner.run(newSuite)

下表列出了测试组中的方法清单:

Sr.No Method & Description
1

试验

恢复试验Case类别中所有测试案例的一套

2

试验

归还特定模块中的所有测试案例。

3

试验

恢复所有测试案例的合体,给人留下了明显的怀疑。

4

发现()

将所有测试单元从特定开端目录中转至分方向,并退还测试标。

TestResult Class

这一类用于汇编有关测试成功和测试失败的信息。 测试对象储存一套测试结果。 测试结果由测试Runner.run()方法重新进行。

测试结果具有以下特性:

Sr.No. Attribute & Description
1

载有2图的测试案例清单和带有格式的追踪。 每个课程都是一种试验,引起意外的例外情况。

2

载有2图的测试案例清单和带有格式的追踪。 每一图都是在使用测试Case.assert* ()方法明确显示失败的试验。

3

一份清单,载有测试案例的两图和显示测试频率的理由。

4

如果迄今为止进行的所有测试都已经通过,否则就会返回法尔。

5

这种方法可以用来表示,正在试验的一套试验应当流产。

6

在实施任何试验之前,一接到要求。

7

在所有试验完成之后,一度要求进行。

8

testsRun

至今为止测试总数。

9

Buffer

如果有,sys.stdoutsys.stderr 将在

下述法典实施测试套——

if __name__ ==  __main__ :
   runner = unittest.TextTestRunner()
   test_suite = suite()
   result = runner.run (test_suite)
   
   print "---- START OF TEST RESULTS"
   print result

   print "result::errors"
   print result.errors

   print "result::failures"
   print result.failures

   print "result::skipped"
   print result.skipped

   print "result::successful"
   print result.wasSuccessful()
   
   print "result::test-run"
   print result.testsRun
   print "---- END OF TEST RESULTS"

执行守则时显示以下产出:

---- START OF TEST RESULTS
<unittest.runner.TextTestResult run = 2 errors = 0 failures = 1>
result::errors
[]
result::failures
[(<__main__.suiteTest testMethod = testadd>,  Traceback (most recent call last):

   File "test3.py", pne 10, in testadd
 
   self.assertTrue(result == 100)
Assert
   ionError: False is not true
 )]
result::skipped
[]
result::successful
False
result::test-run
2
---- END OF TEST RESULTS
Advertisements