Unnitest总结

第一点,setUp和tearDown方法

每次执行test开头的用例都会执行setUp和tearDown方法

如:

  1. import unittest
  2.  
  3. class Mydemo(unittest.TestCase):
  4. def setUp(self):
  5. print('调用setUp方法')
  6. self.a = 1
  7. def test1(self):
  8. print("i am test1 the value of a is {}".format(self.a))
  9. def test2(self):
  10. print("i am test2 the value of a is {}".format(self.a))
  11. def test3(self):
  12. print("i am test3 the value of a is {}".format(self.a))
  13. def tearDown(self):
  14. print("调用tearDown方法")
  15. if __name__ == '__main__':
  16. unittest.main()

结果:

第二点: setUpClass和tearDownClass方法

如:

  1. import unittest
  2. class Mydemo(unittest.TestCase):
  3. @classmethod
  4. def setUpClass(cls):
  5. print("调用setUpClass\n")
  6. def test1(self):
  7. print("i am test1")
  8. def test2(self):
  9. print("i am test2")
  10. @classmethod
  11. def tearDownClass(cls):
  12. print("调用tearDownClass")
  13. if __name__ == '__main__':
  14. unittest.main()

结果:

第三点:定义全局的属性,可以放到setUpClass中testCase中均可去调用

如:

  1. class NavigationTest(unittest.TestCase):
  2. @classmethod
  3. def setUpClass(cls):
  4. cls.driver = webdriver.Chrome()
  5. cls.driver.implicitly_wait(30)
  6. cls.driver.maximize_window()
  7. cls.driver.get('https://www.baidu.com/')
  8. driver = cls.driver #定义在全局中
  9. cls.search_field = driver.find_element_by_name('wd') #定义在全局中
  10.  
  11. def testBrowserNavigation(self):
  12. self.search_field.clear()
  13. print('执行test1')
  14.  
  15. self.search_field.send_keys('圣女果')
  16. self.search_field.submit()
  17. time.sleep(1)
  18.  
  19. self.assertEqual('圣女果_百度搜索',self.driver.title)
  20.  
  21. self.driver.back()
  22. self.assertTrue(WebDriverWait(self.driver,30).until(expected_conditions.title_contains('百度一下')))
  23. def testBrowserNavigation2(self):
  24. driver = self.driver
  25. search_field = driver.find_element_by_name('wd')
  26. search_field.clear()
  27. print('执行test2')
  28.  
  29. search_field.send_keys('璎珞')
  30. search_field.submit()
  31. time.sleep(1)
  32. @classmethod
  33. def tearDownClass(cls):
  34. driver = cls.driver
  35. time.sleep(10)
  36. driver.quit()
  37.  
  38. if __name__ == "__main__":
  39. unittest.main()

第四点:testCase之间的执行顺序按照默认是以首字母排序的

执行顺序test1,test10,....test18,test2,..........test9

Unnitest总结

第一点,setUp和tearDown方法

每次执行test开头的用例都会执行setUp和tearDown方法

如:

l   import unittest

class Mydemo(unittest.TestCase):
    def setUp(self):
        print('调用setUp方法')
        self.a =
1
    def test1(self):
        print("i am test1 the value of a is {}".format(self.a))
    def test2(self):
        print("i am test2 the value of a is {}".format(self.a))
    def test3(self):
        print("i am test3 the value of a is {}".format(self.a))
    def tearDown(self):
        print("调用tearDown方法")
if __name__ == '__main__':
    unittest.main()

结果:

第二点: setUpClass和tearDownClass方法

如:

  1. l   import unittest
  2. class Mydemo(unittest.TestCase):
  3.     @classmethod
  4.     def setUpClass(cls):
  5.         print("调用setUpClass\n")
  6.     def test1(self):
  7.         print("i am test1")
  8.     def test2(self):
  9.         print("i am test2")
  10.     @classmethod
  11.     def tearDownClass(cls):
  12.         print("调用tearDownClass")
  13. if __name__ == '__main__':
  14.     unittest.main()

结果:

第三点:定义全局的属性,可以放到setUpClass中testCase中均可去调用

如:

  1. l   class NavigationTest(unittest.TestCase):
  2.     @classmethod
  3.     def setUpClass(cls):
  4.         cls.driver = webdriver.Chrome()
  5.         cls.driver.implicitly_wait(30)
  6.         cls.driver.maximize_window()
  7.         cls.driver.get('https://www.baidu.com/')
  8.         driver = cls.driver #定义在全局中
  9.         cls.search_field = driver.find_element_by_name('wd') #定义在全局中
  10.  
  11.     def testBrowserNavigation(self):
  12.         self.search_field.clear()
  13.         print('执行test1')
  14.  
  15.         self.search_field.send_keys('圣女果')
  16.         self.search_field.submit()
  17.         time.sleep(1)
  18.  
  19.         self.assertEqual('圣女果_百度搜索',self.driver.title)
  20.  
  21.         self.driver.back()
  22.         self.assertTrue(WebDriverWait(self.driver,30).until(expected_conditions.title_contains('百度一下')))
  23.     def testBrowserNavigation2(self):
  24.         driver = self.driver
  25.         search_field = driver.find_element_by_name('wd')
  26.         search_field.clear()
  27.         print('执行test2')
  28.  
  29.         search_field.send_keys('璎珞')
  30.         search_field.submit()
  31.         time.sleep(1)
  32.     @classmethod
  33.     def tearDownClass(cls):
  34.         driver = cls.driver
  35.         time.sleep(10)
  36.         driver.quit()
  37.  
  38. if __name__ == "__main__":
  39.     unittest.main()

第四点:testCase之间的执行顺序按照默认是以首字母排序的

执行顺序test1,test10,....test18,test2,..........test9

Unnitest测试框架总结的更多相关文章

  1. phpunit 测试框架安装

    PHPUnit是一个轻量级的PHP测试框架.它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计).来自百度百科 一.下载wg ...

  2. 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

  3. selenium测试框架使用xml作为对象库

    之前已经写过一篇: selenium测试框架篇,页面对象和元素对象的管理 上次使用的excel作为Locator对象管理,由于excel处理不够方便,有以下缺点: 不能实现分page 加载Locato ...

  4. selenium 测试框架中使用grid

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecr ...

  5. selenium测试框架篇,页面对象和元素对象的管理

    前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让 ...

  6. Junit测试框架 Tips

    关于Junit测试框架使用的几点总结: 1.Junit中的测试注解: @Test →每个测试方法前都需要添加该注解,这样才能使你的测试方法交给Junit去执行. @Before →在每个测试方法执行前 ...

  7. Python几种常用的测试框架

    一.测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过 ...

  8. 测试框架Mocha与断言expect

    测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码? ...

  9. 在测试框架中使用Log4J 2

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecr ...

随机推荐

  1. 微信小程序开发平台新功能「云开发」快速上手体验

    微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...

  2. 根据指定条件使CheckBox 无法选中

    var trList = $("#tab1").children("tr")for (var i=0;i<trList.length;i++) {var ...

  3. 什么是CLOS架构?

    Clos架构,诞生于1952年,是由一位叫Charles Clos的人提出的,所以它并不是一个新的概念. 这个架构主要描述了一种多级电路交换网络的结构.Clos最大的优点就是对Crossbar结构的改 ...

  4. koa服务器搭建基础

    之前我一直使用rails搭建网站.rails与koa的基本理念很相似,都是基于中间件提供一层层的服务.所不同的是,rails有很多内置的中间件,这使得开发者只需要关注MVC模块以及页面路由.而Koa这 ...

  5. github/gitlab同时管理多个ssh key

    之前一直用github,但是github有一个不好的地方,要是创建私有的项目的话需要付费,而gitlab上则可以免费创建管理私有的项目.由于最近想把自己论文的一些东西整理一下,很多东西还是不方便公开, ...

  6. 浅谈一类无关序列有前缀和性质的统计问题的离线解法 BZOJ3626

    每次询问[l,r]区间,但所有信息是按另一种序列给出的,因此无法使用区间数据结构做这种题.将每个询问改为[1,x],考虑离线,则从1~n依次修改并查询即可. BZOJ3626 给定一颗树,每次询问给定 ...

  7. 百度统计微信网站绑定(vue项目)

    *网站域名:----- *网站首页:----/index.html 下列代码放入index.html vue加百度统计代码(亲测有效)

  8. Form的is_valid校验规则及验证顺序

    一.验证顺序   查看form下的源码了解顺序 BaseForm为基类,中间包含了is_valid校验方法 @html_safe class BaseForm: ......... self.is_b ...

  9. semantic-ui 容器与栅格

    semantic中可以指定one-sixteen这16个单词来指定网格column所占的长度.也就是说,在网页中,一行最多只有16个column,超过16个之后,自动移到下一行. 栅格可以使用i,di ...

  10. Migrate MySQL database using dump and restore

    kaorimatz/mysqldump-loader: Load a MySQL dump file using LOAD DATA INFILEhttps://github.com/kaorimat ...