• 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
    越努力越幸运
  • 相关阅读:
    Day10
    Python pyspider 安装与开发
    深入理解ES6之《块级作用域绑定》
    深入理解ES6之《扩展对象》
    这些特效对于学习前端我们很有用
    算法之旅 | 选择排序法
    JavaScript读取剪贴板中的表格生成图片
    深入理解ES6之《ES7》
    深入理解ES6之《用模块封装代码》
    php://input,$_POST,$HTTP_RAW_POST_DATA区别
  • 原文地址:https://www.cnblogs.com/lfang/p/14899486.html
Copyright © 2020-2023  润新知