首页 >行情 > > 正文

世界热文:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

来源:博客园 2023-06-07 20:10:36

接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。

如何用 python +ddt+excel 实现接口自动化测试

接口自动化测试可以提高测试效率和质量,节省测试成本和时间,保证测试覆盖率和可维护性。


【资料图】

让勇哥带你入门如何用 python +ddt+excel 实现接口自动化测试,请瞧如下内容:

一、准备工作

1. 安装 python 环境

python 是一种简洁、优雅、易学的编程语言,它有丰富的第三方库和社区支持,非常适合用来进行接口自动化测试。安装 python 的3.0以上的版本),并配置好环境变量,以便在命令行中使用 python 命令。

2. 安装相关库

为了进行接口自动化测试,我们需要安装以下几个库:

  • requests:用来发送 HTTP 请求,支持各种方法、参数、头部、身份验证等。

  • xlrd:用来读取 excel 文件中的数据,支持 xls 和 xlsx 格式。

  • openpyxl:用来写入 excel 文件中的数据,支持 xlsx 格式。

  • ddt:用来实现数据驱动测试,可以从 excel 文件中读取多组数据,并生成多个测试用例。

  • unittest:用来编写和执行测试用例,支持断言、前置后置条件、测试套件等。

  • HTMLTestRunner_api:用来生成 HTML 格式的测试报告,支持图表、日志、截图等。

我们可以使用 pip 命令来安装这些库,例如:

pip install requests

二、设计测试

1. 编写 excel 文件

我们需要在 excel 文件中填写接口的相关信息,包括:

  • 接口名称

  • 请求地址

  • 请求方法

  • 请求参数

  • 预期结果

例如:

我们可以将这个 excel 文件保存为 test_data.xlsx,并放在项目的 test_datas 目录下。

2. 封装 excel 操作

为了方便地读取和写入 excel 文件中的数据,我们需要封装一些 excel 操作的函数,例如:

  • 打开表单

  • 获取表头

  • 获取所有数据

  • 写入数据

我们可以将这些函数定义在一个类中,并保存为 excel_handler.py,并放在项目的 Lib 目录下。具体代码如下:

from openpyxl import load_workbookfrom openpyxl.worksheet.worksheet import Worksheetclass ExcelHandler():    """操作Excel"""    def __init__(self, file):        """初始化函数"""        self.file = file        def open_sheet(self, sheet_name) -> Worksheet:        """打开表单"""        wb = load_workbook(self.file)        sheet = wb[sheet_name]        return sheet        def read_rows(self,sheet_name):        """读取除表头外所有数据(除第一行外的所有数据)"""        sheet = self.open_sheet(sheet_name)        rows = list(sheet.rows)[1:]        data = []        for row in rows:            row_data = []            for cell in row:                row_data.append(cell.value)            data.append(row_data)        return data def read_key_value(self,sheet_name):    """获取所有数据,将表头与内容结合整...."""...    return data

3. 封装 requests 请求

为了方便地发送 HTTP 请求,我们需要封装一些 requests 请求的函数,例如:

  • 初始化 session

  • 发送请求

  • 关闭 session

我们可以将这些函数定义在一个类中,并保存为 requests_handler.py,并放在项目的 Lib 目录下。具体代码如下:

import requestsclass HTTPHandler:    # 初始化    def __init__(self):        self.session = requests.Session()        # 定义一个方法,接收访问http请求的方式    def visit(self, url, method, params=None, data=None, json=None, **kwargs):        res = self.session.request(method, url, params=params, data=data, json=json, **kwargs)        try:            return res.json()        except ValueError:            print("return not json")        # 关闭session会话    def close_session(self):        self.session.close()

三、执行测试

1. 编写测试用例

我们需要使用 unittest 和 ddt 来编写和执行测试用例,具体步骤如下:

  • 导入相关库和模块

  • 定义一个测试类,继承 unittest.TestCase

  • 定义一个类方法,用来初始化 session 和读取 excel 文件中的数据

  • 使用 @ddt.data 装饰器,传入 excel 文件中的数据

  • 定义一个测试方法,用来发送请求,并断言响应结果是否符合预期

我们可以将这些代码保存为 test_api.py,并放在项目的 test_cases 目录下。具体代码如下:

from Lib.excel_handler import ExcelHandlerfrom Lib.requests_handler import HTTPHandlerimport requestsimport ddtimport unittestdata = ExcelHandler("test_datas/test_data.xlsx").read_key_value("Sheet1")@ddt.ddtclass TestAPI(unittest.TestCase):    @classmethod    def setUpClass(cls):        cls.s = HTTPHandler()        @ddt.data(*data)    def test_api(self,params):        print("params:%s" % params)        case_name = params.get("接口名称")        url = params.get("请求地址")        args = eval(params.get("请求参数")) if isinstance(params.get("请求参数"), str) else params.get("请求参数")        method = params.get("请求方法")        expct_res1 = params.get("预期结果")                # 发起请求,获取返回数据        result = self.s.visit(url, method, params=args)        # 分析返回数据        response_data = result["name"]                # 断言响应结果是否符合预期        self.assertEqual(expct_res1, response_data)    @classmethod    def tearDownClass(cls):       cls.s.close_session()

2. 生成测试报告

我们需要使用 HTMLTestRunner_api 来生成 HTML 格式的测试报告,具体步骤如下:

  • 导入相关库和模块

  • 定义一个测试套件,添加测试用例

  • 定义一个测试报告的文件名和路径

  • 定义一个测试运行器,传入测试报告的文件对象和相关参数

  • 使用测试运行器来运行测试套件

我们可以将这些代码保存为 run.py,并放在项目的根目录下。具体代码如下:

import unittestfrom HTMLTestRunner_api import HTMLTestRunnerfrom test_cases.test_api import TestAPI# 定义一个测试套件suite = unittest.TestSuite()# 添加测试用例suite.addTest(unittest.makeSuite(TestAPI))# 定义一个测试报告的文件名和路径report_file = "reports/test_report.html"# 定义一个测试运行器,传入测试报告的文件对象和相关参数with open(report_file, "wb") as f:    runner = HTMLTestRunner(f, title="接口自动化测试报告", description="用例执行情况")    # 使用测试运行器来运行测试套件    runner.run(suite)

四、查看结果

运行 run.py 文件后,我们可以在 reports 目录下看到生成的 test_report.html 文件,打开它,我们可以看到以下内容:

我们可以看到,共有 11 个测试用例,通过 6 个,失败 5 个。我们还可以看到每个测试用例的详细信息,包括用例名称、请求地址、请求参数、预期结果、实际结果等。我们还可以看到一些图表、日志、截图等。

这样,我们就完成了用 python +ddt+excel 实现接口自动化测试的过程。

总结

以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注:

我的公众号:百态测试

博客(奈非天的主页 - 博客园 (cnblogs.com))

我会不定期地分享更多的精彩内容。感谢你的阅读和支持!

本文来自博客园,作者:奈非天,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html

上一篇:斯宾塞祝贺《暗黑4》发售 开服后爽玩了18小时! 下一篇:最后一页
x
推荐阅读

世界热文:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

2023-06-07

斯宾塞祝贺《暗黑4》发售 开服后爽玩了18小时!

2023-06-07

word数字复制到excel后面都是0_word数字复制到excel 全球热资讯

2023-06-07

聚和材料:全资子公司拟在江苏省常州市投资建设“高端光伏电子材料基地项目”

2023-06-07

今日高考 5309名简阳学子奔赴考场

2023-06-07

本川智能06月07日主力资金大幅流出

2023-06-07

泉为科技:目前公司业务拓展顺利

2023-06-07

泗洪风情网官网招聘_泗洪风情网官网 全球百事通

2023-06-07

腾达建设(600512)6月7日主力资金净卖出134.88万元_当前报道

2023-06-07

海关总署:前5个月民营企业进出口8.86万亿元,占外贸总值比重超五成 全球短讯

2023-06-07

【收评】棕榈油日内下跌0.31% 机构称油脂反弹乏力

2023-06-07

吉视传媒董秘回复: 感谢关注公司,公司“吉视传媒股份有限公司数据中心整体建设项目”项目名称有误-快资讯

2023-06-07

当前通讯!上海研发的“书生·浦语”大语言模型发布

2023-06-07

天龙八部2飞龙战天群雄争霸怎么玩-全球观焦点

2023-06-07

ST星星:目前电动自行车已取得3C认证证书 并于6月6日开始生产

2023-06-07

产业兴 乡村美_快播

2023-06-07

【独家】无锡市局来宜开展不动产登记质量督查

2023-06-07

亚运来了!速度围观这组“绍兴味”十足的海报

2023-06-07

不明白太放不开你的爱_不明白不明白为什么我不能放得开 观天下

2023-06-07

罗博特科盘中创历史新高-全球聚焦

2023-06-07

新加坡公开赛,陈雨菲大胜!单打16强上半区对阵出炉,国羽德比 当前热门

2023-06-07

环球信息:教育部:坚持师德违规“零容忍”

2023-06-07

全球今热点:23贴现国债34中标利率为1.2225%

2023-06-07

当前报道:三部门联合部署推进打击整治盗采海砂违法犯罪专项行动

2023-06-07

全球速讯:厦门:火炬高新区深化服务 加速企业智能化转型

2023-06-07

中国首艘大型邮轮出坞需要几步? 全球速读

2023-06-07

中国驻日本大使吴江浩会见滋贺县知事三日月大造

2023-06-07

北上广的年轻人,在深夜蹲点抢剩菜盲盒

2023-06-07

环球最资讯丨孕妇胎盘低要注意什么睡姿_孕妇胎盘低要注意什么

2023-06-07

焦点速看:退堂鼓艺术家类似梗_退堂鼓十级选手是什么梗类似的称号还有哪些

2023-06-07

保利置业集团:前5月累计合同销售金额约333亿元,同比增长212%|环球快看点

2023-06-07

Apple TV+将推出梅西纪录剧集 回顾他五次世界杯之旅 世界看热讯

2023-06-07

环球观点:江西省抚州市2023-06-04 17:59发布雷电黄色预警

2023-06-07

山东杏林科技职业学院有哪些专业 山东杏林科技职业学院专业排名_天天亮点

2023-06-07

【天天播资讯】易基50基金净值天天基金净值_易基50

2023-06-07

70盗贼如何赚钱_盗贼如何赚钱-全球球精选

2023-06-07

环球要闻:圆柱的面积是不是底面积乘高_圆柱的面积一定圆柱的底面积与高

2023-06-07

什么是计税基础举例说明_什么是计税基础 如何理解

2023-06-07

112属于什么警(不小心拨打了112怎么办)

2023-06-07

漳州电大官网登录_漳州电大远程继续教育官网

2023-06-07

中评镜头:50年威海营区走入历史作停车场-今日热闻

2023-06-07

欧美人妖在线播放_欧美人妖 当前最新

2023-06-07

中国社区网官方网站_徐娘社区是一个怎样的网站

2023-06-07

【天天新视野】主力合约资金流向金十期货6月6日讯,截至23:00,资金流入方面,铁矿石2309流入4.38亿元,玻璃2309流入2.29亿元,豆油2309流入1.26亿元;资金流出方面,甲醇2309流出4.70亿元,螺纹2310流出1.46亿元,焦煤2309流出1.31亿元

2023-06-07

澳优(01717.HK)拟1.477亿港元出售Pure Nutrition的60.0%权益及相关债务|天天热文

2023-06-07

【天天报资讯】老外吃饭间隙给老板女儿辅导英语,老板:他们在这边工作,希望能多来吃饭,女儿也想请他们吃烧饼

2023-06-07

“硅基新物种”“极智科技顶奢”……贾跃亭造新词?法拉第未来回应:已有词汇无法形容创新之举 天天速看

2023-06-07

实时焦点:助理医师考试报名时间2019_助理医师考试报名时间

2023-06-06

星云股份(300648.SZ):公司业务领域为锂电池检测、储能等,不涉及对液晶面板、PC产品的检测|天天头条

2023-06-06

连云港宅基地转让收费标准是多少_全球视讯

2023-06-06

咸丰罾沟村:“红军渡”里风光美 环球新视野

2023-06-06

关闭135端口最简单方法_关闭135端口 世界热消息

2023-06-06

连续七个月获得销冠 比亚迪领跑以色列新能源电动车市场

2023-06-06

5月1日起取消征信逾期记录是真的吗?其实是误传,小心谣言!-天天头条

2023-06-06

资讯推荐:宁德时代发生32笔大宗交易 合计成交4.68亿元

2023-06-06

芒种至,仲夏始,播种健康做好“5件事”

2023-06-06

刺激战场国际服电脑版_怎么下刺激战场国际服|世界微头条

2023-06-06

2023年6月6日山东省植物油酸价格最新行情预测-环球资讯

2023-06-06

新乡市1-5月市区新房销售7681套,同比增长20.75%

2023-06-06

海口一学生为购买周杰伦演唱会门票被骗8万多,警方已立案 当前通讯

2023-06-06

每日速读!苹果WWDC吐槽大会 iOS 17用了母公司5年前技术

2023-06-06

当前速递!危险!警惕这六大新型网络传销!

2023-06-06

Mysteel解读:天气炒作初现,豆粕期现价格大幅上涨

2023-06-06

新能源将主导能源结构转型_世界热点

2023-06-06

璞泰来:公司复合集流体产品的铜箔将来源于公司自产

2023-06-06

【聚看点】智能驾驶系统传感器布置位置及方式探究

2023-06-06

焦点播报:海通证券:拟启动“基于金融大语言模型的证券公司内部协同助手”课题研究

2023-06-06

紧抓跨境电商发展机遇 世界百事通

2023-06-06

伯格扎克(伯格佐格) 环球快资讯_环球报资讯

2023-06-06

早安北京0606:最高温35℃;“国考”补录今起报名

2023-06-06

西南证券:长线维持看好黄金大周期 把握低位配置窗口期

2023-06-06

“为上名校复读13年考生” 不应被树为“励志榜样”

2023-06-06

一卡一平台 大行有“爆款”!独家发行大运会联名卡,助力金融服务质效提升-环球快播

2023-06-06

【全球热闻】中钢在线创立时间(中钢在线)

2023-06-06

在现场 | 2023张家口国际跳棋海选赛在北新村小学开赛

2023-06-06

全球信息:天玛智控科创板上市首日股价涨9.48% 背后浮现国家能源集团身影

2023-06-06

沟槽放坡系数怎么算(放坡沟槽土方计算公式) 天天微动态

2023-06-06

美国银行CEO预测美经济今年下半年衰退:失业率将升至4%高位

2023-06-06

莓茶是什么口感_莓茶是什么茶 每日热议

2023-06-05

7月5日起,成都直飞菲律宾长滩岛旅游包机复航 每周4班|前沿资讯

2023-06-05

全球热消息:苹果语音助手功能将重大升级:Hey Siri成历史

2023-06-05

环球今日讯!太原:清徐,“庙”不可言!

2023-06-05

收评:创业板指低开低走跌1.39% AI应用方向多股涨停 最新消息

2023-06-05

蔚来ET5旅行版将于6月15日上市,率先交付中国市场 全球球精选

2023-06-05

【天天速看料】solidworks扫描特征的使用_solidworks扫描

2023-06-05

创意视频 | 当郦道元来到2023年的河北…_全球快播报

2023-06-05

中国银行女儿金金条价格今天多少一克(2023年06月05日) 全球快资讯

2023-06-05

旭光电子6月5日盘中跌幅达5%

2023-06-05

高考、中考临近 家有考生“吃”要注意

2023-06-05

美国导演协会与电影电视制作人联盟达成初步协议

2023-06-05

环球最新:“弃女拒绝认亲”的法律道德和人性思考

2023-06-05

杭州一新能源汽车撞上高速收费站起火 4人死亡!官方通报

2023-06-05

市场监管总局:加快推动《公平竞争审查条例》制定工作

2023-06-05

环球新动态:加快塑造现代化人力资源 有力支撑中国式现代化

2023-06-05

高清下载!全国“安全生产月”主题宣传片、海报、公益广告_环球播资讯

2023-06-05

“一辆SUV盲区能藏75个孩子”的警示 世界热议

2023-06-05

农业银行大额存单利率上调了?存入25万元,年利息能拿多少? 环球快播报

2023-06-05

高考期间,合肥最高气温32℃ 看热讯

2023-06-05

世界今日报丨中国最早的卫生巾谁发明的_搓澡巾是中国人发明的吗

2023-06-05

程乃珊_关于程乃珊的介绍-全球信息

2023-06-05