#coding=utf8
'''
测试hello类。
创建一个测试用例通过子类TestCase。
在测试用例中定义了五个独立的方法,且方法命名以test开头。
这个命名方便通知test runner哪些方法表示测试。
每个测试的关键是调用:
assertEqual()检查是否是期望结果;
assertTrue()或 assertTrue()验证条件是否正确;
assertRaises()对指定异常进行保存验证
使用这些方法而不是assert语句,因此测试运行器可以获取所有测试结果并生成报告.setUp()在执行测试方法之前,初始化测试环境
tearDown()方法是清场,断绝与其他测试用例的关联最后的模块使用简单的方法运行测试。
unittest.main()为测试脚本提供一个命令行接口。
通过命令行运行时,产生的报告是类似与下面格式:
...
----------------------------------------------------------------------
Ran 3 tests in 0.000sOK不用unittest.main(),还有其他方法来运行测试,
这些方法具有更好的控制级别、更少的输出、并且不需要从命令行运行。
例如,最后两行可以替换为:
suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)
unittest.TextTestRunner(verbosity=2).run(suite)
TestStringMethods代表测试用例的名字,本例中代表:TestHello
产生的报告方式如下:
test_HELLO (__main__.TestHello) ... ok
test_HELLo (__main__.TestHello) ... ok
test_HELlo (__main__.TestHello) ... ok
test_HEllo (__main__.TestHello) ... ok
test_Hello (__main__.TestHello) ... ok
test_HelloType (__main__.TestHello) ... ok----------------------------------------------------------------------
Ran 6 tests in 0.001sOK'''
#导入测试框架unittest中的TestCase
from unittest import TestCase,main,TextTestRunner,TestLoader#定义测试包
class Hello(object):'''定义一个静态属性列表'''Hl=["Hello","HEllo","HELlo","HELLo","HELLO"]class TestHello(TestCase):'''创建一个TestCase'''#对测试进行初始化def setUp(self):'''创建一个Hello对象'''self.HL=Hello()'''创建测试函数'''def test_Hello(self):self.assertEqual(self.HL.Hl[0], "Hello", "Hello")self.assertTrue("Hello"==self.HL.Hl[0])self.assertFalse("Hello"==self.HL.Hl[1])def test_HEllo(self):self.assertEqual(self.HL.Hl[1], "HEllo", "HEllo")def test_HELlo(self):self.assertEqual(self.HL.Hl[2], "HELlo", "HELlo")def test_HELLo(self):self.assertEqual(self.HL.Hl[3], "HELLo", "HELLo")def test_HELLO(self):self.assertEqual(self.HL.Hl[4], "HELLO", "HELLO")def test_HelloType(self):with self.assertRaises(TypeError):"hello world".split(2)def tearDown(self):pass
if __name__=="__main__":#以命令行接口#main()#创建一个测试集调用测试加载工具suite = TestLoader().loadTestsFromTestCase(TestHello)TextTestRunner(verbosity=2).run(suite)