zoukankan      html  css  js  c++  java
  • 4.构造测试套件

    1.按照顺序执行

    代码如下:

    import unittest
    from selenium import webdriver
    
    class BaiduTest(unittest.TestCase):
        def setUp(self):
            self.driver=webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get("http://www.baidu.com")
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news(self):
            "验证百度首点击新闻后的跳转"
            self.driver.find_element_by_link_text("新闻").click()
            url = self.driver.current_url
            self.assertEqual(url,'http://news.baidu.com/')
    
        def test_baidu_map(self):
            "验证百度首页点击地图后的跳转"
            self.driver.find_element_by_link_text("地图").click()
            self.driver.get("http://www.baidu.com")
    
    if __name__ == '__main__':
        suite= unittest.TestSuite()
        suite.addTest(BaiduTest("test_baidu_news"))
        suite.addTest(BaiduTest("test_baidu_map"))
        unittest.TextTestRunner().run(suite)

    注解:首先对TestSuite类进行实例化,使之成为一个对象suite,然后调用TestSuite类中addTest方法,把测试用例添加到测试套件中,最后执行测试套件,从而执行测试套件中的测试用例。运行以上代码后,测试用例会按照添加到测试套件的顺序执行,也就是说先添加进去的先执行,后添加进去的后执行。

    2.按测试类执行

    import unittest
    from selenium import webdriver
    
    class BaiduTest(unittest.TestCase):
        def setUp(self):
            self.driver=webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get("http://www.baidu.com")
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news(self):
            "验证百度首点击新闻后的跳转"
            self.driver.find_element_by_link_text("新闻").click()
            url = self.driver.current_url
            self.assertEqual(url,'http://news.baidu.com/')
    
        def test_baidu_map(self):
            "验证百度首页点击地图后的跳转"
            self.driver.find_element_by_link_text("地图").click()
            self.driver.get("http://www.baidu.com")
    
    if __name__ == '__main__':
        suite = unittest.TestSuite(unittest.makeSuite(BaiduTest))
        unittest.TextTestRunner().run(suite)

    注解:以上代码可以看出,在测试套件TestSuite类中,unittest模块调用了makeSuite的方法,makeSuite的参数是testCaseClass,也就是测试类。

    3.加载测试类

    在unittest模块中也可以使用TestLoader类来加载测试类,也就是说TestLoader加载测试类并将它们返回到TestSuite中,TestLoader类的应用代码如下:

    import unittest
    from selenium import webdriver
    
    class BaiduTest(unittest.TestCase):
        def setUp(self):
            self.driver=webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get("http://www.baidu.com")
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news(self):
            "验证百度首点击新闻后的跳转"
            self.driver.find_element_by_link_text("新闻").click()
            url = self.driver.current_url
            self.assertEqual(url,'http://news.baidu.com/')
    
        def test_baidu_map(self):
            "验证百度首页点击地图后的跳转"
            self.driver.find_element_by_link_text("地图").click()
            self.driver.get("http://www.baidu.com")
    
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromTestCase(BaiduTest)
        unittest.TextTestRunner().run(suite)

    4.按照测试模块执行

    在TestLoader类中也可以按模块来执行测试。在python中,一个python文件就是一个模块,一个模块中可以有N个测试类,一个测试类中可以有N个测试用例。按照模块执行的代码如下:

    import unittest
    from selenium import webdriver
    
    class BaiduTest(unittest.TestCase):
        def setUp(self):
            self.driver=webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get("http://www.baidu.com")
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_news(self):
            "验证百度首点击新闻后的跳转"
            self.driver.find_element_by_link_text("新闻").click()
            url = self.driver.current_url
            self.assertEqual(url,'http://news.baidu.com/')
    
        def test_baidu_map(self):
            "验证百度首页点击地图后的跳转"
            self.driver.find_element_by_link_text("地图").click()
            self.driver.get("http://www.baidu.com")
    class BaiduMap(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(30)
            self.driver.get("http://www.baidu.com")
    
        def tearDown(self):
            self.driver.quit()
        def test_baidu_map(self):
            "验证:测试百度首页点击地图后的跳转"
            self.driver.find_element_by_link_text("地图").click()
            self.driver.get("http://baidu.com")
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromModule("test.py")
        unittest.TextTestRunner(verbosity=2).run(suite)
    
    
    
    
    
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromTestCase(BaiduTest)
        unittest.TextTestRunner().run(suite)

    注解:在以上代码中可以看到,测试类分别是BaiduMap和BaiduTest,模块名称为test.py,TestLoader类直接调用loadTestFromModule方法返回给指定模块中包含的所有测试用例套件。

    5.优化测试套件

    以上实例是把测试套件写在了main主函数中,也可以单独把测试套件写成一个方法来调用这里以加载测试类为例,把测试套件写成一个单独的方法,代码如下:

    from  selenium import webdriver
    import unittest
    
    class BaiduTest(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://www.baidu.com')
            self.driver.implicitly_wait(30)
    
        def tearDown(self):
             self.driver.quit()
    
        def test_baidu_news(self):
            self.driver.find_element_by_link_text('').click()
    
        def test_baid_taps(self):
            self.driver.find_element_by_link_text('地图').click()
            
        @staticmethod
        def suite(testcaseClass):
            suite = unittest.TestLoader().loadTestsFromTestCase(testcaseClass)
            return suite
    
    if __name__ == '__main__':
        unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite(BaiduTest))

     

  • 相关阅读:
    <转>程序员的心理疾病
    lua与c++ 中布尔布bool值对应关系
    php根据身份证号码计算年龄
    Java中List与Map初始化的一些写法
    在ASP.NET中发送电子邮件的实例教程
    C#中Messagebox.Show()常用参数用法详解
    Js判断CSS文件加载完毕的实例教程
    PHP CURL访问HTTPS使用详解
    下拉导航菜单被遮住解决办法
    Struts2基本包作用详解
  • 原文地址:https://www.cnblogs.com/Chamberlain/p/11397540.html
Copyright © 2011-2022 走看看