3. 单元测试框架(unittest)1——TestCase

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的变量是本地变量,加了就是实例变量;
 
10. 测试用例执行顺序解决办法:
  1. 测试套件
    testcase = unittest.TestLoader().loadTestsfromTestCase(测试类)
    suites = unittest.TestSuite()
    suites.addTest(class('testcase')
  2. TestCase的名称:按照1-9,A-Z,a-z
  3. 补充unittest的框架:如链接楼主的utx;

 

猜你喜欢

转载自www.cnblogs.com/noobzeng/p/10991844.html