31、ddt+os之接口测试

一、请求函数

二、路径函数

import os

'''专门来读取路径的值'''

#切换到顶级目录
project_path=os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]
#测试用例的路径
test_case_path=os.path.join(project_path,'testcase_03','test.xlsx')
print(test_case_path)
#测试报告的路径
test_report_path=os.path.join(project_path,'report','测试报告1.html')
print(test_report_path)

三、excel读取

from openpyxl import load_workbook


# 相对路径  绝对路径
# 打开工作簿
class DoExcel:

    @staticmethod
    def get_data(file_name, sheet_name):
        #       wb=load_workbook("../testcase_03/test.xlsx")
        wb = load_workbook(file_name)
        sheet = wb[sheet_name]

        test_data = []
        for i in range(2, sheet.max_row + 1):
            row_data = {}#字典
            row_data['case_id'] = sheet.cell(i, 1).value
            row_data['url'] = sheet.cell(i, 3).value
            row_data['data'] = sheet.cell(i, 4).value
            row_data['title'] = sheet.cell(i, 5).value
            row_data['http_method'] = sheet.cell(i, 6).value
            row_data['expected'] = sheet.cell(i, 7).value
            test_data.append(row_data)
        return test_data

    def write_back(self, file_name, sheet_name, i, value, j=8):  # 专门写回数据
        wb = load_workbook(file_name)
        sheet = wb[sheet_name]
        sheet.cell(i, j).value = value
        wb.save(file_name)


if __name__ == '__main__':
    res = DoExcel().get_data("D:\PycharmProjects\class_01\\testcase_03\\test.xlsx", 'Sheet1')
    print(res)

四、测试用例

import unittest
from testcase_03.project_path import *

from testcase_04.http_request import HttpRequest
from testcase_04.get_cookie import GetCookie
#针对数据是列表嵌套列表/列表嵌套字典时,我们可以进行脱外套处理,脱完之后有几条元素就有几条用例
from ddt import ddt,data
from testcase_03.do_excel import DoExcel

#地址前面的r是进行特殊字符的转义
test_data=DoExcel.get_data(test_case_path, 'Sheet1')
#装饰测试类
@ddt
class TestHttpRequest(unittest.TestCase):
    def setUp(self):
        pass

    #data装饰我们的测试用例
    @data(*test_data)
    #将拆分的数据一条一条传进来,保存到item中去
    def test_getlist(self,item):
        #data是字符串存入字典里面还是字符串,不再是字典,所以需要eval一下
        res = HttpRequest().http_request(item['url'], eval(item['data']), item['http_method'], getattr(GetCookie, 'cookie'))
        #存入excel中的code是数字,需要str一下
        self.assertEqual(str(item['expected']),res.json()['code'])
        print("获取到的结果是:{0}".format(res.json()))

    def tearDown(self):
        pass

五、测试报告

import unittest
import HTMLTestRunner
from testcase_03.test_http_request import TestHttpRequest
from testcase_03.project_path import *
suite=unittest.TestSuite()
loader=unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestHttpRequest))

with open(test_report_path, 'wb') as file:
    # 执行用例
    runner = HTMLTestRunner.HTMLTestRunner(stream=file,
                                           title='test_getlist',
                                           description='单元测试报告',
                                           verbosity=2)
    runner.run(suite)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值