【unittest单元测试框架】(5)数据驱动应用
数据驱动应用
数据驱动是自动化测试的一个重要功能,虽然不使用单元测试框架一样可以写测试代码和使用数据文件,但是这就意味着放弃了单元测试框架提供给我们的所有功能,如测试用例的断言、灵活的运行机制、结果统计及测试报告等。这些都需要自己去实现,显然非常麻烦。所以,抛开单元测试框架谈数据驱动的使用是没有意义的。
下面探讨数据驱动的使用,以及 unittest 关于参数化的库:
1、数据驱动
由于大多数文章和资料都把“读取数据文件”看作数据驱动的标志,所以我们来讨论一下这个问题。
在 unittest 中,使用读取数据文件来实现参数化可以吗?当然可以。这里以读取 CSV文件为例。创建一个 baidu_data.csv 文件,如图所示:
# -*- coding:utf-8 -*- # filename: test_baidu2.py # author: hello.yin # data: 2021/11/16 19:47 import csv import codecs import unittest from time import sleep from selenium import webdriver from itertools import islice class BaiduTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() cls.base_url = "https://www.baidu.com" cls.test_data = [] with codecs.open(r"..\test_data\search_data.csv", "r") as f: data = csv.reader(f) for line in islice(data, 1, None): cls.test_data.append(line) @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(2) def test_search_selenium(self): self.baidu_search(self.test_data[0][1]) def test_search_unittest(self): self.baidu_search(self.test_data[1][1]) def test_search_parameteried(self): self.baidu_search(self.test_data[2][1]) if __name__ == "__main__": unittest.main(verbosity=2)
这一次,用 setUpClass() 方法读取 baidu_data.csv 文件,并将文件中的数据存储到test_data 数组中。分别创建不同的测试方法使用 test_data 中的数据,测试结果如下。
执行结果:
Testing started at 20:06 ... 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/unittest_extend/test_case/test_baidu2.py Launching unittests with arguments python -m unittest D:/00test/base_practice/unittest_extend/test_case/test_baidu2.py in D:\00test\base_practice\unittest_extend\test_case Ran 3 tests in 21.315s OK Process finished with exit code 0
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
本文来自博客园,作者:hello_殷,转载请注明原文链接:https://www.cnblogs.com/yinzuopu/p/15563319.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
浙公网安备 33010602011771号