zoukankan      html  css  js  c++  java
  • 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
    越努力越幸运
  • 相关阅读:
    Oracle数据库部分迁至闪存存储方案
    RAC环境下误操作将数据文件添加到本地存储
    Oracle的窗口和自动任务
    ####### Scripts Summary #######
    plsql 操纵表数据的2种方式
    css 如何使图片与文字在div中居中展示?
    eclipse svn新增文件不显示在文件列表,只有修改文件可以提交!
    js 正则表达式校验必须包含字母、数字、特殊字符
    css 禁止录入中文
    POJ 1740:A New Stone Game
  • 原文地址:https://www.cnblogs.com/lfang/p/14899486.html
Copyright © 2011-2022 走看看