• 理解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这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件。

  • 相关阅读:
    如何使用Shiro
    ORACLE: 查询(看)表的主键、外键、唯一性约束和索引
    图片下载器类
    关于Android如何创建空文件夹,以及mkdir和mkdirs的区别
    图片二值化 和灰度处理方法
    InputSream转为String
    Bitmap Byte[] 互转
    静默安装/ 普通安装与root权限获取相关
    EventBus 3.0使用相关
    文件存储工具类
  • 原文地址:https://www.cnblogs.com/award/p/9031667.html
Copyright © 2020-2023  润新知