【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
 

posted on 2021-11-16 20:11  hello_殷  阅读(98)  评论(0)    收藏  举报

导航

作者:hello.殷
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。