python参数化库Parameterized

Parameterized 是 Python 的一个参数化库,同时支持 unittest、Nose 和 pytest 单元测试 框架

GitHub 地址:https://github.com/wolever/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"

     @classmethod
     def tearDownClass(cls):
     cls.driver.quit()

    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 + "_百度搜索")

if __name__ == '__main__':
    unittest.main(verbosity=2)

在@parameterized. expand()中,每个元组都可以被认为是一条测试用例。元组中的数据 为该条测试用例变化的值。在测试用例中,通过参数来取每个元组中的数据。

在 test_search()中,name 参数对应元组中第一列数据,即“case1”“case2”“case3”, 用来定义测试用例的名称;search_key 参数对应元组中第二列数据,即“selenium”“unittest” “parameterized”,用来定义搜索的关键字。

 

@parameterized.expand([param(1,2,3),param('he','llo','hello')])
    def test(self,test1,test2,test3):
        self.assertEqual((test1+test2),test3)

 

参考学习:虫师

 

posted @ 2023-06-18 20:17  天才九少  阅读(584)  评论(0)    收藏  举报