1. import unittest 引入unittest模块; 2. class SearchTest (unittest.TestCase): 定义一个继承于TestCase类的子类; 3. def setUp(self): 测试执行器在每次执行测试方法之前优先执行该方法(这样做有助于确保每个测试方法都能够依赖相同的环境); 此方法没有参数,而且不返回任何值; 4. def test_search_by_category(self): test()方法也是在TestCase类中实现,重要的一点是需要给测试方法命名为test开头;这种命名约定通知test runner哪个方法代表测试方法; 5. self.assertEqual(1,len(products)) 调用assertEqual(预期值,实际值)来校验预期结果; 验证用程序搜索该术语返回的结果是否和预期结果相匹配; 6. def tearDown(self): TestCase类会在测试执行完成之后调用tearDown()方法来清理所有的初始化值; 一旦测试被执行,在setUp()方法中定义的值将不再需要,所以最好的做法是在测试执行完成的时候清理掉由setUp()方法初始化的数值; 7. if __name__ == '__main__': unittest.main(verbosity=2) 为了通过命令行的运行测试,我们可以在测试用例中添加对main方法的调用。 将传递verbosity参数以便使详细的测试总量展示在控制台: verbosity是一个选项,表示测试结果的信息复杂度,有三个值 0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F” 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息 并且 你在命令行里加入不同的参数可以起到一样的效果 加入 --quiet 参数 等效于 verbosity=0 加入--verbose参数等效于 verbosity=2 什么都不加就是 verbosity=1
8. 改初始化和结束初始化的方法级别的方法为类级别的方法,类级别的方法,无论类中有多少个用例,都只会共用一个浏览器; @classmethod def setUpClass(cls): @classmethod def tearDownClass(cls): 9. 方法中的self指向类的实例,有点this的意思,不加self的变量是本地变量,加了就是实例变量; http://python.jobbole.com/81921/ http://www.cnblogs.com/bigberg/p/7252349.html 10. 测试用例执行顺序解决办法: http://www.cnblogs.com/songzhenhua/p/9690198.html 1. 测试套件 testcase = unittest.TestLoader().loadTestsfromTestCase(测试类) suites = unittest.TestSuite() suites.addTest(class('testcase') 2. TestCase的名称:按照1-9,A-Z,a-z 3. 补充unittest的框架:如链接楼主的utx;