20、简单的基于ddt的获取天气的接口测试

博主进行接口测试的简单实践,包括准备测试数据、编写文件读取工具类和测试类,最后生成测试报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天突然想使用做一下接口测试,做了个简单测试

1、准备测试数据

versioncityidcityipcallback
v1101120201青岛27.193.13.255 
v1101010100北京27.193.13.255 
v1101010300朝阳27.193.13.255 
v1101010300顺义27.193.13.255 
v1101010400怀柔27.193.13.255 
v1101010500通州27.193.13.255 

 

2、编写文件读取的工具类:

# coding=utf-8
import xlrd


class FileUtils():

    def __init__(self, file_path, sheet_index):
        self.data = xlrd.open_workbook(file_path)
        self.table = self.data.sheet_by_index(sheet_index)
        self.key = self.table.row_values(0)
        self.row_num = self.table.nrows
        self.clo_num = self.table.ncols

    def read_excel(self):
        if self.row_num <= 1:
            print (u"Excel数据小于等于1行")
        else:
            list = []
            num = 1
            for row in range(self.row_num - 1):
                dict = {}
                values = self.table.row_values(num)
                for clo in range(self.clo_num):
                    dict[self.key[clo]] = values[clo]
                list.append(dict)
                num += 1
            return list


if __name__ == '__main__':
    file_path = "E:\\PythonWorkspace\\Portal\\file\\test_data.xlsx"
    sheet_index = 0
    data = FileUtils(file_path, sheet_index)
    list = data.read_excel()
    print list

编写测试类:

# coding=utf-8

from interface.FileUtils import FileUtils
import requests
import unittest
import ddt


@ddt.ddt
class Inter(unittest.TestCase):

    file_path = "E:\\PythonWorkspace\\Portal\\file\\test_data.xlsx"
    sheet_index = 1
    data = FileUtils(file_path, sheet_index)
    lists = data.read_excel()

    def setUp(self):
        print (u"程序执行开始")
        self.url = "https://www.tianqiapi.com/api/"

    @ddt.data(*lists)
    def test_inter(self, lists):
        print (u"第一%s执行" % lists)
        r = requests.get(self.url, lists)
        print r.text

    def test_4(self):
        u"通过post请求获取天气数据"
        dicts = {
            "version": "v1",
            "cityid": "101120201",
            "city": u"青岛",
            "ip": "27.193.13.255",
            "callback": ""
        }
        url = "https://www.tianqiapi.com/api/"
        req = requests.post(url, json=dicts)
        print(req.status_code)
        print(req.text)
        print(req.content)

    def tearDown(self):
        print u"程序执行完成"


if __name__ == '__main__':
    unittest.main()

生成测试报告

# coding:utf-8
import unittest
import os
import HTMLTestRunner

# 用例路径
case_path = os.path.join(os.getcwd(), "")
print case_path
# 报告存放路径
report_path = os.path.join(os.getcwd(), "")
print report_path
# html报告文件
report_abspath = os.path.join(report_path, "result.html")

discover = unittest.defaultTestLoader.discover(case_path,
                                                pattern="case*.py",
                                                top_level_dir=None)

fp = open(report_abspath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                       title=u'自动化测试报告,测试结果如下:',
                                       description=u'用例执行情况:')

# 调用add_case函数返回值
runner.run(discover)
fp.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值