python: excel+ddt+unittest 结合简单使用

测试数据维护到excel

第一步:操作excel

import openpyxl

# 操作excel
class DoExcel:

    def __init__(self, file_name, sheet_name):
        self.file_name = file_name
        self.sheet_name = sheet_name

    def get_data(self):
        '''获取需要打开的excel文件和操作的表单'''
        try:
            wb = openpyxl.load_workbook(self.file_name)
            sheet = wb[self.sheet_name]
        except Exception as e:
            print("excel文件或sheet不存在:{0}".format(e))
            raise e

        # 存储从 excel里面读取的数据
        test_data = []

        for i in range(2, sheet.max_row + 1):
            sub_data = {}
            # 将excel数据一个个读取出来,放到字典里面
            sub_data['method'] = sheet.cell(i, 2).value
            sub_data['url'] = sheet.cell(i, 3).value
            sub_data['data'] = sheet.cell(i, 4).value
            sub_data['headers'] = sheet.cell(i, 5).value
            sub_data['excepted'] = sheet.cell(i, 6).value

            test_data.append(sub_data)

        return test_data


if __name__ == '__main__':
    excel = DoExcel('testData_1.xlsx', 'Sheet1').get_data()
    print(excel)
View Code

第二步:维护测试用例

import unittest
from util.HttpRequest import HttpRequest
from ddt import ddt,data,unpack
from test_excel_demo.do_excel_ddt.do_excel import DoExcel
from test_excel_demo.do_excel_ddt.get_data import GetData

# 获取测试用例数据
test_data = DoExcel('testData_1.xlsx', 'Sheet1').get_data()

# 维护测试用例
@ddt
class TestLogin(unittest.TestCase):

    @data(*test_data)
    def test_login_ok(self,item):
        print(item)
        user_token = getattr(GetData, 'user_token')
        res = HttpRequest().http_request(item['method'], item['url'], eval(item['data']), eval(item['headers']))
        print(res.json())
        self.assertEquals(item['excepted'], res.json()['code'])
View Code
知识点:eval()  方法是变成原有的类型,如 t = ‘[1,2,3]’  --> eval(t) 得到的结果为:[1,2,3]

第三步:加载测试用例、生成测试报告

import unittest
from util.HTMLTestReportCN import HTMLTestRunner
from test_excel_demo.do_excel_ddt.test_http import TestLogin


# 测试用例加载和生成测试报告
class TestSuitCase:

    def test_suit(self):
        # 加载用例
        suit = unittest.TestSuite()
        loader = unittest.TestLoader().loadTestsFromTestCase(TestLogin)
        suit.addTest(loader)

        # 生成测试报告
        with open('text_report_2.html', 'wb') as file:
            # 生成测试报告
            runner = HTMLTestRunner(stream=file, title='单元测试报告', description='接口测试', tester='罗方')
            # 跑用例,生成测试报告
            runner.run(suit)


if __name__ == '__main__':
    TestSuitCase().test_suit()
View Code
越努力越幸运
原文地址:https://www.cnblogs.com/lfang/p/14899486.html