我是靠谱客的博主 现代美女,最近开发中收集的这篇文章主要介绍Python Selenium自动化测试框架 Test Suite测试套件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Time will tell.

1、Test Suite测试套件

一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行。

应用 Unittest 的 TestSuites 特性,可以将不同的测试组成一个逻辑组,然后设置统一的测试套件,并通过一个命令来执行测试。这都是通过 TestSuitesTestLoaderTestRunn类来实现的。

2、类级别的setUp()方法和tearDown()方法

使用setUpClass()方法和tearDownClass()方法及@classmethod标识来实现各个测试方法共享初始化数据。看下面代码:


searchtest.py

import unittest
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChainsimport time

class SearchTest(unittest.TestCase):

    '''通过setUpClass()和@classmethod标识,实现

     在类级别初始化数据,所有测试方法共享这些初始化数据.

     不使用这个的话,每个测试方法都会单独创建一个实例'''

    @classmethod

    def setUpClass(cls):

        cls.driver = webdriver.Firefox()

        cls.driver.implicitly_wait(10)

        cls.driver.maximize_window()

        cls.driver.get("https://www.cnblogs.com/")

    def test_search_by_category(self):

        #读取category.txt文件,返回一个字典

        with open('data/category.txt', encoding='UTF-8') as category_file:

            category_dict = dict()

            category_data = category_file.readline().strip().split(',')

            the_class = category_data.pop(0)

            category_dict[the_class] = category_data

        #定位首页网站分类中的编程语言

        self.search_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')

        #光标悬停在“编程语言”上

        ActionChains(self.driver).move_to_element(self.search_class).perform()

        # 以列表形式返回编程语言下的所有小类

        self.search_small = self.driver.find_elements_by_xpath(

            '//div[@id="cate_content_block_2"]/div[@class="cate_content_block"]/ul/li')

        #休眠3秒

        time.sleep(3)

        small_cate = []

        for s in self.search_small:

            #去掉小类最后面的(0),并添加到列表small_cate中

            small = str(s.text).split('(')

            small_cate.append(small[0])

        #检查表达式是否为true(此处检查编程语言下的小类是否与预期结果一致)

        self.assertTrue(small_cate == category_dict["编程语言"])

        # self.assertEqual(small_cate,category_dict["编程语言"])

    def test_search_by_look(self):

        self.seach_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')

        #定位编程语言下的小类Python

        self.seach_small =self.driver.find_element_by_xpath('//li/a[@href="/cate/python/"]')

        ActionChains(self.driver).move_to_element(self.seach_class).perform()

        self.seach_small.click()

        #检查打开的网页标题是不是 Python - 网站分类 - 博客园

        # assert "Python - 网站分类 - 博客园" in self.driver.title

        self.assertEqual(self.driver.title,"Python - 网站分类 - 博客园" )

    '''通过tearDownClass()和@classmethod标识,实现

     在类级别初始化数据,所有测试方法共享这些初始化数据'''

    @classmethod

    def tearDownClass(cls):

        cls.driver.quit()

#加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试

if __name__ == '__main__':

    #加verbosity=2参数,在命令行中显示具体的测试方法

    unittest.main(verbosity=2)
    


homepagetest.py

import  unittest
from selenium import  webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By

class HomePageTest(unittest.TestCase):

    '''通过setUpClass()和@classmethod标识,实现

     在类级别初始化数据,所有测试方法共享这些初始化数据.

     不使用这个的话,每个测试方法都会单独创建一个实例'''

    @classmethod

    def setUpClass(cls):

        cls.driver = webdriver.Firefox()

        cls.driver.implicitly_wait(10)

        cls.driver.maximize_window()

        cls.driver.get("https://www.cnblogs.com/")

    def test_search_field(self):

        #通过by,检查博客园首页有没有搜索框,is_element_present()是自定义的方法

        self.assertTrue(self.is_element_present(By.ID,"zzk_q"))

    def test_search_btn(self):

        # 通过by,检查博客园首页有没有找找看按钮

        self.assertTrue(self.is_element_present(By.CLASS_NAME,"search_btn"))

    def test_menu(self):

        #该方法检查博客园首页菜单栏信息是否与预期一致

        #读取menu.txt文件数据

        with open('data/menu.txt',encoding='UTF-8') as menu_file:

            menu_data = menu_file.readline().strip().split(',')

        #以列表形式返回博客园首页菜单栏信息

        self.check_menu = self.driver.find_elements_by_xpath('//div[@id="nav_menu"]/a')

        the_menu = []

        for c in self.check_menu:

            #将博客园首页的菜单名称和URL添加到列表the_menu

            the_menu.append(c.text + c.get_attribute('href'))

        #检查2个列表是否一致(检查博客园首页的菜单名称及URL是否和预期一致)

        self.assertListEqual(the_menu,menu_data)

    def is_element_present(self,how,what):

        #找到元素,返回True,否则返回False

        try:

            self.driver.find_element(by=how,value = what)

        except NoSuchElementException as e:

            return False

        return True

    @classmethod

    def tearDownClass(cls):

        cls.driver.quit()

# 加上下面2句,可以通过命令行运行测试,不加的话不影响通过IDE运行测试

if __name__ == '__main__':

    # 加verbosity=2参数,在命令行中显示具体的测试方法

    unittest.main(verbosity=2)
    


smoketests.py (测试套件)

import unittest
from searchtest import SearchTest
from homepagetest import HomePageTest

#获取SearchTest类 和 HomePageTest类中的所有测试方法

search_test = unittest.TestLoader().loadTestsFromTestCase(SearchTest)

home_page_test = unittest.TestLoader().loadTestsFromTestCase(HomePageTest)

#创建一个包括SearchTest和HomePageTest的测试套件

smoke_tests = unittest.TestSuite([home_page_test,search_test])

#运行测试套件

unittest.TextTestRunner(verbosity=2).run(smoke_tests)

3、其他说明

# 另外一个文件在上一篇中已经说明

要完全使用上面的代码,需要创建一个文件menu.txt,输入以下数据:

园子https://home.cnblogs.com/,新闻https://news.cnblogs.com/,博问https://q.cnblogs.com/,闪存https://ing.cnblogs.com/,小组https://group.cnblogs.com/,收藏https://wz.cnblogs.com/,招聘https://job.cnblogs.com/,班级https://edu.cnblogs.com/,找找看http://zzk.cnblogs.com/


运行smoketests.py

好喽,内容就到这里,如果你对Python自动化软件测试更多内容感兴趣,在这里推荐一个学习资料分享群:175317069。有各项已整理好的测试学习资源,也有行业深潜多年的技术人分析讲解。

作为测试工程师,不断提升自己工作能力是提高薪资待遇最重要的基础。另外也要注重学习, IT 行业是个不断发展、更新迭代相对较快的行业,技术具有明显的时代特征,所以紧跟时代技术的发展才能让自己不掉队,在职场当中具有足够的竞争力。

测试工程师职业发展路线:
功能测试 — 接口测试 — 自动化测试 — 测试开发 — 测试架构师

最后希望看到这里的你终成为一名极具竞争力的高级测试工程师。

觉得还不错就【点赞】、【评论】、【关注】吧~

Time will tell.(时间会说明一切)

最后

以上就是现代美女为你收集整理的Python Selenium自动化测试框架 Test Suite测试套件的全部内容,希望文章能够帮你解决Python Selenium自动化测试框架 Test Suite测试套件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部