zoukankan      html  css  js  c++  java
  • 理解unittest

    unittest,顾名思义就是一个单元测试框架,但是它不仅适用于单元测试,还适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。

      实例:

      百度搜索界面测试用例Test Case:

    复制代码
     1 # coding=utf-8
     2 
     3 import unittest
     4 from selenium import webdriver
     5 import time
     6 
     7 
     8 class TestBaiduUi(unittest.TestCase):
     9     def setUp(self):
    10         chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
    11         self.driver = webdriver.Chrome(chromedriver)
    12         self.driver.implicitly_wait(30)  # 隐性等待时间为30秒
    13         self.base_url = "https://www.baidu.com"
    14 
    15     def test_baidu(self):
    16         driver = self.driver
    17         driver.get(self.base_url + "/")
    18         driver.maximize_window()
    19         driver.find_element_by_id("kw").clear()
    20         driver.find_element_by_id("kw").send_keys("unittest")
    21         driver.find_element_by_id("su").click()
    22         time.sleep(3)
    23         # 对浏览器标题进行断言测试
    24         title = driver.title
    25         self.assertEqual(title, u"unittest_百度搜索")
    26 
    27     def tearDown(self):
    28         self.driver.quit()
    29 
    30 
    31 if __name__ == "__main__":
    32     unittest.main()
    复制代码

      豆瓣界面测试用例Test Case:

    复制代码
     1 # coding=utf-8
     2 
     3 import unittest
     4 from selenium import webdriver
     5 import time
     6 
     7 
     8 class TestDoubanUi(unittest.TestCase):
     9 
    10     def setUp(self):
    11         chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
    12         self.driver = webdriver.Chrome(chromedriver)
    13         self.driver.implicitly_wait(30)  # 隐性等待时间为30秒
    14         self.base_url = "https://www.douban.com/"
    15 
    16     def test_douban(self):
    17         driver = self.driver
    18         driver.get(self.base_url + "/")
    19         driver.maximize_window()
    20         driver.find_element_by_xpath('//*[@id="anony-nav"]/div[2]/form/span[1]/input').clear()
    21         driver.find_element_by_xpath('//*[@id="anony-nav"]/div[2]/form/span[1]/input').send_keys("复仇者联盟三")
    22         driver.find_element_by_xpath('//*[@id="anony-nav"]/div[2]/form/span[2]/input').click()
    23         time.sleep(3)
    24         # 对浏览器标题进行断言测试
    25         title = driver.title
    26         self.assertEqual(title, u"搜索: 复仇者联盟三")
    27 
    28     def tearDown(self):
    29         self.driver.quit()
    30 
    31 
    32 if __name__ == "__main__":
    33     unittest.main()
    复制代码

      通过测试套件TestSuite来组装多个测试用例。 

    复制代码
     1 # coding=utf-8
     2 
     3 import unittest
     4 from com.action import test_baidu
     5 from com.action import test_douban
     6 import HTMLTestRunner
     7 import time
     8 
     9 # 构造测试集
    10 suite = unittest.TestSuite()
    11 suite.addTest(test_baidu.TestBaiduUi('test_baidu'))
    12 suite.addTest(test_douban.TestDoubanUi('test_douban'))
    13 
    14 if __name__ == '__main__':
    15     # 执行测试
    16     now = time.strftime("%Y-%m-%M-%H_%M_%S", time.localtime(time.time()))
    17     fp = open("result" + now + ".html", 'wb')
    18     runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='UI界面测试', description=u'用例执行情况:')
    19     runner.run(suite)
    20     fp.close() 
    复制代码

      从上述运行实例可以看出:

      一、TestSuite是多个测试用例集合在一起

      二、runner定义测试报告格式,stream定义报告写入的二进制文件,title为报告的标题,description为报告的说明,runner.run()用来运行测试case,注意最后用fp.close()将文件关闭!

      三、用w或a模式打开文件的话,如果文件不存在,那么就自动创建。此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。在模式字符的后面,还可以加上+ b t这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件。

  • 相关阅读:
    App测试总脚本1.30.py
    adb安装中的platform-tools文件的生成问题
    App测试总脚本1.20
    App测试总脚本1.10(使用了列表推导式)
    APP网络测试要点和弱网模拟
    算法1—冒泡排序
    三次握手和四次挥手
    测试基础总结
    四道题设计用例
    使用复杂条件下的if选择结构
  • 原文地址:https://www.cnblogs.com/txx403341512/p/9355247.html
Copyright © 2011-2022 走看看