【unittest单元测试框架】(6)Parameterized库
Parameterized
Parameterized 是 Python 的一个参数化库,同时支持 unittest、Nose 和 pytest 单元测试框架。
GitHub 地址:https://github.com/wolever/parameterized。
Parameterized 支持 pip 安装
这里将通过 Parameterized 实现参数化
# -*- coding:utf-8 -*- # filename: test_baidu.py # author: hello.yin # date: 2021/11/16 20:18 import unittest from time import sleep from selenium import webdriver from parameterized import parameterized class BaiduTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() 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").clear() self.driver.find_element_by_id("kw").send_keys(search_key) self.driver.find_element_by_id("su").click() sleep(3) @parameterized.expand([ ("case1", "helloyin"), ("case2", "selenium"), ("case3", "unittest") ]) def test_seach(self, name, search_key): self.baidu_search(search_key) self.assertEqual(self.driver.title, search_key+'_百度搜索') 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,输出更详细的执行日志。
运行上面的测试用例,结果如下。
Testing started at 20:27 ... C:\Users\yzp\AppData\Local\Programs\Python\Python37\python.exe "C:\Program Files\JetBrains\PyCharm 2018.2\helpers\pycharm\_jb_unittest_runner.py" --path D:/00test/base_practice/practice/test_baidu3.py Launching unittests with arguments python -m unittest D:/00test/base_practice/practice/test_baidu3.py in D:\00test\base_practice\practice Ran 3 tests in 24.000s OK Process finished with exit code 0
通过测试结果可以看到,因为是根据@parameterized.expand()中元组的个数来统计测试用例数的,所以产生了 3 条测试用例。test_search 为定义的测试用例的名称。参数化会自动加上“0”、“1”和“2”来区分每条测试用例,在元组中定义的“case1”“case2”“case3”也会作为每条测试用例名称的后缀出现。
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
本文来自博客园,作者:hello_殷,转载请注明原文链接:https://www.cnblogs.com/yinzuopu/p/15563426.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
浙公网安备 33010602011771号