- Nose Testing - Tools
- Nose Testing - Framework
- UnitTest Framework - Py.test Module
- UnitTest Framework - Doctest API
- UnitTest Framework - Doctest
- UnitTest Framework - Signal Handling
- UnitTest Framework - Unittest2
- UnitTest Framework - Time Test
- UnitTest Framework - Exceptions Test
- UnitTest Framework - Skip Test
- UnitTest Framework - Test Discovery
- UnitTest Framework - Assertion
- UnitTest Framework - API
- UnitTest Framework - Framework
- UnitTest Framework - Overview
- UnitTest Framework - Home
UnitTest Framework Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
UnitTest Framework - API
本章讨论单元测试模块界定的类别和方法。 该模块有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.stdout和sys.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 RESULTSAdvertisements