python接口自动化测试(单元测试方法)

一、环境搭建

  •  python +unittest+ requests实现http请求的接口自动化
  • Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Python的基础;
  • unittest是python的标准测试库,相比于其他测试框架是python目前使用最广的测试框架。
  • Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP 库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。
  • 在CMD命令行执行命令加载request第三方库:pip install requests
  •  python -m pip install pillow

二、方法

  • pip安装requests第三方库,然后引入:import requests
  • 引入json标准库,美化json输出:import json
  • 调用requests库中的post方法,会给出所需要的参数,传入上面定义的url和data参数,运行.py文件就执行了post请求。

import requests    #pip安装requests第三方库,然后引入
import json             #引入json标准库,美化json输出url = 'http://***/account/login'
data = {"username":"***01","password":"password",
}result = requests.post(url,data).json()  #以json格式输出
print(result)
result = requests.post(url,data).text     #以源码形式输出
print(result)

import requests#引入requests第三方包
import json#引入json包class Login():def httprequests(self,url,data,method):#self为类函数的默认函数,放在第一位if method=="post":res=requests.post(url,data)#post请求方法else:res=requests.get(url,data)#get请求方法print(res.text)#以源码形式输出print(res.json())#以json形式输出#创建实例,调用函数
test1=Login()
login_url='https://www.******/pc/member/sign'
login_data={"flag":"mobile","password":"f5e05a41724115d076bfb1fd2bd9613e","mobile_phone":"136********"}
login_method='post'
test1.httprequests(login_url,login_data,login_method)

三、单元测试

  • 什么是单元测试:单元测试就是对代码进行测试,本质就是对类或者函数进行测试
  • 什么时候进行单元测试:代码完成后就开始进行测试
  • 由谁进行单元测试:一般有开发自己进行测试
  • 目的:尽可能早的介入测试,发现底层代码中的问题
  • 方法:使用unittest方法包:import unittest  

 (1)先创建一个加法类-Mathmethod,存入Mathmethod.py文件

#定义一个数学加法类
class Mathmethod():def add(self,a,b):return(a+b)def sub(self,a,b):return(a-b)

(2)然后创建测试用例-TestMathmethod

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.Mathmethod import Mathmethod  # 引入Mathmethod模块
#import HTMLTestRunnerNewclass TestMathmethod(unittest.TestCase):#创建TestMathmethod类,继承unittest.TestCase方法#编写测试用例,函数命名必须以test_开头def test_add_two_num(self):res=Mathmethod().add(3,6)print('两个数值相加结果是',res)self.assertEqual(9,res)def test_sub_two_num(self):res=Mathmethod().sub(9,8)print('两个数值相减结果是', res)self.assertEqual(1,res)

(3)创建测试报告-使用HTML方法

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethodtestunit=unittest.TestSuite()#生成单元测试流程
testunit.addTest(TestMathmethod("test_add_two_num"))
testunit.addTest(TestMathmethod("test_sub_two_num"))#加载一条测试用例
fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
runner=HTMLTestRunner(stream=fp,title="加法测试",description="用例执行情况:")
runner.run(testunit)
fp.close()

 

 (4)也可使用txt的形式输出测试报告

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethodsuite=unittest.TestSuite()#收集测试用例
loader=unittest.TestLoader()#加载测试用例-按照类的方法添加一个类下面的所有测试用例
suite.addTest(loader.loadTestsFromTestCase(TestMathmethod))
file=open('test_case.txt','w+')#测试报告的存储路径和测试报告的读写方式
runner=unittest.TextTestRunner(stream=file,verbosity=2,#测试报告的详细程度
)
runner.run(suite)#执行测试用例

test_add_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok
test_sub_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok----------------------------------------------------------------------
Ran 2 tests in 0.000sOK
(5)生成测试报告方法三(HTML的方式)


import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethodsuite=unittest.TestSuite()#收集测试用例
loader=unittest.TestLoader()#加载测试用例
suite.addTest(loader.loadTestsFromTestCase(TestMathmethod))fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
runner=HTMLTestRunner(stream=fp,title="加法测试",description="用例执行情况:")
runner.run(suite)
fp.close()

Python接口自动化测试零基础入门到精通(2023最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL -- 库和表的操作

MySQL – 库和表的操作 文章目录 MySQL -- 库和表的操作一、库的操作1.创建数据库2.查看数据库3.删除数据库4.字符集和校验规则5.校验规则对数据库的影响6.修改数据库7.备份和恢复8.查看连接情况 二、表的操作1.创建表2.查看表结构3.修改表4.删除表 一、库的操作 注意&#xf…

蓝桥杯中级题目之组合(c++)

系列文章目录 数位递增数_睡觉觉觉得的博客-CSDN博客拉线开关。_睡觉觉觉得的博客-CSDN博客蓝桥杯中级题目之数字组合(c)_睡觉觉觉得的博客-CSDN博客 文章目录 系列文章目录前言一、个人名片二、描述三、输入输出以及代码示例1.输入2.输出3.代码示例 总…

muduo异步日志库

文章目录 一、日志库模型1.前端 参考 一、日志库模型 组成部分 muduo日志库由前端和后端组成。 muduo日志库是异步高性能日志库,其性能开销大约是前端每写一条日志消息耗时1.0us~1.6us。 采用双缓冲区(double buffering)交互技术。基本思…

蛇口街道小区长者服务示范点 ——在家门口“乐享晚年”

2023年9月28日,深圳市南山区蛇口街道创建健康街道行动之“老年肌少症免费筛查”项目走进了海昌社区,为数十位长者开展了系统筛查。在家门口就能够享受到由蛇口医院康复科医生提供的专业服务,这对于小区的老人们来说还是第一次。自今年7月以来…

【红日靶场】vulnstack5-完整渗透过程

系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 【红日靶场】vulnstack4-完整渗透过程 文章目录 系列文章目录描述虚拟机密码红队思路 一、环境初始化二、开始渗透外网打点上线cs权限提升域信息…

华为OD 整数最小和(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

BMS电池管理系统之SOC估算方法介绍

目录 1、 SOC 估算方法分类 (1)开路电压法 (2)电流积分法 (3)内阻法

PHP的基础知识点解析

目录 一、语法 二、变量 三、数据类型 四、运算符 五、条件语句 六、循环结构 七、函数 八、数组 PHP是一种流行的开源服务器端脚本语言,用于Web开发。它易于学习和使用,并具有许多强大的功能和特性。本文将介绍PHP的一些基本知识点,…

数据库MySQL(一):基础知识

数据库(DataBase,DB),即存放数据的仓库,其特点是:数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。 数据库管理系统(DataBase Management …

图(graph)的遍历----深度优先(DFS)遍历

目录 前言 深度优先遍历(DFS) 1.基本概念 2.算法思想 3.二叉树的深度优先遍历(例子) 图的深度优先遍历 1.图(graph)邻接矩阵的深度优先遍历 思路分析 代码实现 2.图(graph)邻接表的深度优先遍历 思路分析 代码实现 递…

Linux内存管理(9):HugePage

当运行内存需求量较大的应用程序时,如果使用长度为4KB的页,将会产生较多的TLB未命中和缺页异常,严重影响应用程序的性能。如果使用长度为2MB甚至更大的巨型页,可以大幅减少TLB未命中和缺页异常的数量,大幅提高应用程序的性能。这才是内核引入巨型页的真正原因。 一个巨页必…

2023年10月23日--10月29日(主攻光追视频教程)

最好每周完成一样,将来每月完成一样,有成就感。也免得周末迷茫。 光锥目前还有56节, 周二到周五每天4小节。周六日每天20小节,应该可以完成。 即: 周二:9.5-9.8 周三:9.9-10.3 周四&#xff1a…

利用dockerfile升级flink的curl

最近Nusses扫出flink镜像有CURL漏洞,才发现要更新到最新版本 8.4.0,笔者当时flink版本为: flink:1.17.1-scala_2.12-java8 官方镜像仓库:https://hub.docker.com/_/flinkapt源 我试了如上2种方法,都不能更新curl到8…

京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!

鲸参谋监测的京东平台9月份洗烘套装市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台洗烘套装的销量为7100,环比下降约37%,同比增长约87%;销售额为6000万,环比下降约48%&#…

Rust-后端服务调试入坑记

这篇文章收录于Rust 实战专栏。这个专栏中的相关代码来自于我开发的笔记系统。它启动于是2023年的9月14日。相关技术栈目前包括:Rust,Javascript。关注我,我会通过这个项目的开发给大家带来相关实战技术的分享。 如果你关注过我的Rust 实战里…

JWFD开源工作流矩阵引擎测试版本BUG20231022修正代码

public void ParamFileOutputValue(String paramfile) {String s "";String sp "";String ssp "";List<String> list new ArrayList<String>();int p 0;int k 0;//这个地方要修改为整个参数表的最大行数&#xff0c;而不是起始…

Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现

可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎&#xff0c;它还提供了分布式的多用户能力&#xff0c;实时的分析&#xff0c;以及对复杂搜索语句的处理能力&#xff0c;使其在众多场景下&#xff0c;如企业搜索&#xff0c;日志和事件数据分析等…

后台交互-首页->与后台数据进行交互,wsx的使用

与后台数据进行交互wsx的使用 1.与后台数据进行交互 // index.js // 获取应用实例 const app getApp() const apirequire("../../config/app.js") const utilrequire("../../utils/util.js") Page({data: {imgSrcs:[{"img": "https://cd…

华为OD 数组二叉树(200分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为OD…

算法随想录算法训练营第四十四天|1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划

1143.最长公共子序列 题目&#xff1a;给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情…