Python unittest & ddt 实现

    技术2022-07-11  137

    Python unittest & ddt 实现

    一、安装 unittest & ddt二、ddt 实现三、小结 ddt 对于测试来说,非常方便生成用例,特别是数据很多,用例类似的。 个人经历的一个项目,文本过滤。需要对海量数据进行排查过滤文字,就是使用这个方式处理。

    一、安装 unittest & ddt

    pip install unittest pip install ddt

    二、ddt 实现

    核心代码 # coding: utf-8 import unittest import ddt from xmlrunner import XMLTestRunner from Predict import Predict from char_cnn_api import get_csv_data, write_csv_data @ddt.ddt class CharCnnTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.test_res = {'matched': [], 'unmatched': [], 'results': []} #数据源获取 @ddt.data(*get_csv_data('./test_data/CurrentPolitical.csv')) @ddt.unpack def test_char_cnn_predict(self, data, result): predict_test = Predict() ret = predict_test.http_predict(data) self.test_res['results'].append(str(ret) + data) print(ret) if ret['output'] == result: self.test_res['matched'].append(data) elif ret['output'] != result: self.test_res['unmatched'].append(data) @classmethod def tearDownClass(cls): #过滤存储 for key, val in cls.test_res.items(): write_csv_data('./report/{}.csv'.format(key), val) if __name__ == '__main__': suite = unittest.TestSuite() loader = unittest.TestLoader() suite.addTest(loader.loadTestsFromTestCase(CharCnnTest)) with open('report/test_result.xml', 'w') as output: runner = XMLTestRunner(output=output, verbosity=2) report = runner.run(suite) if not report.wasSuccessful(): exit(1) 数据源获取代码和过滤存储 # coding: utf-8 import csv import requests import json import numpy as np import pandas def get_csv_data(csv_path): """ read test data from csv and return as list @type csv_path: string @param csv_path: some csv path string @return list """ rows = [] with open(str(csv_path), "r") as fp: content = fp.readlines() for line in content: line = str(line).replace(',', '。').replace(',', '。') rows.append([line, 1]) return rows def write_csv_data(csv_path, data): with open(str(csv_path), 'w') as fp: for line in data: fp.write(line)

    三、小结

    以上就是简单实现ddt过程。不过这里数据量很多,还需要使用多线程,多进程加快执行用例。

    Processed: 0.018, SQL: 9