1 TestCase
一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,
包括测试环境的准备(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。单元
测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
2 TestSuite
而多个测试用例集合在一起就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader是用来加载测试用例到TestSuite中的。
3 TextTestRunner
TextTestRunner是用来执行测试用例的,其中的run()会执行TestSuite/TestCase中的run(result)方法。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
4 Fixture
而对一个测试用例环境的搭建和销毁,是一个fixture。
案例:定义一个calculate类,然后用unittest进行测试;
#!/usr/bin/python3
class Math:
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
测试代码:
#!/usr/bin/python3
from calculator import Math
import unittest
class TestMath(unittest.TestCase):
def setUp(self):
print('test start')
def test_add(self):
j = Math(5,10)
#self.assertEqual(j.add(),15)
self.assertEqual(j.add(),12)
def tearDown(self):
print('test end')
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestMath('test_add'))
runner = unittest.TextTestRunner()
runner.run(suite)
执行结果;
Testing started at 16:39 ... C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\_jb_unittest_runner.py" --path E:/Selenium/unittest/test_Math.py Launching unittests with arguments python -m unittest E:/Selenium/unittest/test_Math.py in E:\Selenium\unittest test start test end
Ran 1 test in 0.008s
FAILED (failures=1)
12 != 15
Expected :15 Actual :12 <Click to see difference>
Traceback (most recent call last): File "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\teamcity\diff_tools.py", line 30, in _patched_equals old(self, first, second, msg) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 829, in assertEqual assertion_func(first, second, msg=msg) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 822, in _baseAssertEqual raise self.failureException(msg) AssertionError: 15 != 12
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 605, in run testMethod() File "E:\Selenium\unittest\test_Math.py", line 13, in test_add self.assertEqual(j.add(),12)
Process finished with exit code 1
因为12 !=15,所以报错。