美文网首页
自动化测试:通过Parameterized实现参数化

自动化测试:通过Parameterized实现参数化

作者: mango115 | 来源:发表于2021-02-07 16:42 被阅读0次

    Parameterized 是 Python 的一个参数化库,同时支持 unittest、Nose 和 pytest 单元测试
    框架。
    GitHub 地址:https://github.com/wolever/parameterized
    Parameterized 支持 pip 安装。
    使用命令:pip install parameterized

    import unittest
    from time import sleep
    from selenium import webdriver
    from parameterized import parameterized
    
    class TestBaidu(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Chrome()
            cls.base_url = "https://www.baidu.com"
    
        def baidu_search(self,search_key):
            self.driver.get(self.base_url)
            self.driver.find_element_by_id("kw").send_keys(search_key)
            self.driver.find_element_by_id("su").click()
            sleep(2)
    
        #通过Parameterized实现参数化
        @parameterized.expand([
            ("case1","selenium"),
            ("case2","unittest"),
            ("case3","parameterized"),
        ])
        def test_search(self,name,search_key):
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title,search_key+"_百度搜索")
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

    首先,导入 Parameterized 库下面的 parameterized 类。
    其次,通过@parameterized.expand()来装饰测试用例 test_search()。
    在@parameterized. expand()中,每个元组都可以被认为是一条测试用例。元组中的数据
    为该条测试用例变化的值。在测试用例中,通过参数来取每个元组中的数据。
    在 test_search()中,name 参数对应元组中第一列数据,即“case1”“case2”“case3”,
    用来定义测试用例的名称;search_key 参数对应元组中第二列数据,即“selenium”“unittest”
    “parameterized”,用来定义搜索的关键字。
    最后,使用 unittest 的 main()方法,设置 verbosity 参数为 2,输出更详细的执行日志。
    运行上面的测试用例,结果如下。


    image.png

    通过测试结果可以看到,因为是根据@parameterized.expand()中元组的个数来统计测试
    用例数的,所以产生了 3 条测试用例。test_search 为定义的测试用例的名称。参数化会自
    动加上“0”、“1”和“2”来区分每条测试用例,在元组中定义的“case1”“case2”“case3”
    也会作为每条测试用例名称的后缀出现。
    --来源虫师《Selenium3自动化测试实战——基于Python语言》

    相关文章

      网友评论

          本文标题:自动化测试:通过Parameterized实现参数化

          本文链接:https://www.haomeiwen.com/subject/ulbztltx.html