Python接口自动化测试详解

news2024/9/29 15:32:52

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快   

一、环境搭建

  • 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 HTMLTestRunnerNew
 
 
class 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 TestMathmethod
 
 
testunit=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 TestMathmethod
 
suite=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.000s
 
OK

(5)生成测试报告方法三(HTML的方式)

 
import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethod
 
suite=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()
 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

​这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

如何加密文档?电脑文件安全加密详细操作步骤(10种方法)

防患于未然,智者之举也。 文档与电脑文件的安全加密,正如古时城门深锁、密函暗藏,实为守护信息安全的智慧之举。 本文将引领您穿越古今,以十种详尽的方法,探讨如何在电脑上安全加密文档,确保您的信息固若金…

阿里云服务器的基本使用

1、购买云服务器 1. 注册阿里云账号,登录进去选择产品,阿里云目前有云服务器试用的政策,对于新手学习者,我们可以选择一个试用服务器 2. 选择服务器之后创建实例(选择试用之后根据提示一步一步创建实例)&…

关于shell输出颜色的事情

实例 # echo -e "\e[1;33;41m test content \e[0m"分析: 1、-e:转义起始符,等同于\033,表示定义一个转义序列 2、[:表示开始定义颜色 3、1;33;41:其中1表示高亮,33表示字体颜色为黄色…

ubuntu设置jupyter远程连接

一、配置远程连接 我是在unbuntu虚拟环境中操作的,(要安装使用虚拟环境请看:ubuntu安装虚拟环境-CSDN博客) step1:生成配置文件 jupyter notebook --generate-config 这样在~/.jupyter文件夹下就有 jupyter_noteboo…

AI绘画SD必学技能—从零开始训练你的专属Lora 模型!StableDiffusion模型训练保姆级教程建议收藏!

大家好,我是画画的小强 接触AI绘画的小伙伴,一定听过Lora。 Lora模型全称是:Low-Rank Adaptation of Large Language Models,可以理解为Stable-Diffusion中的一个插件,在生成图片时,Lora模型会与大模型结…

要做实施先做人

文/杨长春 作者简介:某IT公司项目总监,资深IT博主,专注于IT项目知识分享,著有《实战需求分析》、《软件需求分析实战》、《数字化管理软件实施》。 圣人曰,要做实施先做人。 作为一个软件项目的实施者,项目…

如何探索Sui DeFi生态

无论你是想进行tokens兑换、探索NFT世界,还是只是想借出资产以赚取奖励,Sui的DeFi生态都有适合你的内容。由于Sui原生的特性,这些apps能够应对DeFi中的常见挑战,例如通过DeepBook解决流动性问题。 一个健康的DeFi生态由几个关键应…

RFID光触发标签的特性、应用与传统RFID标签的差别

在当今数字化、智能化的时代浪潮中,RFID技术作为一种非接触式自动识别技术,已经在众多领域得到了广泛应用。而RFID光触发标签作为这一技术的创新发展,正以其独特的优势引领着行业的变革。 一、RFID光触发标签的特性 (一&#xf…

GitHub配置SSH:一步步教你如何轻松连接远程仓库

GitHub配置SSH:一步步教你如何轻松连接远程仓库 优点:具体步骤1.检查本地SSH密钥2. 生成 ssh key3. 获取并保存公钥内容4.添加公钥到GitHub账户5.验证SSH设置是否成功 SSH工作原理 主页传送门:📀 传送 优点: 提高安全…

Android13禁用Settings里面的Force Stop 強制停止按钮

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码修改 4.编译 5.彩蛋 1.前言 禁用Settings里面的 強制停止按钮,禁用下面这个按钮 2.问题分析 根据文本找到对应的位置 搜索 Force stop 或者 強制停止,结果 ./packages/apps/Settings/res/values/s…

领夹麦克风哪个品牌好?揭秘选购无线麦克风时的五大隐藏风险

随着短视频行业的兴起,几乎人人都会拍些视频分享日常,更有一些人成为了专职的短视频内容的创作者。其实无论是专业的或是非专业的,我们在拍摄过程中,都会使用到一些辅助工具,比如摄影支架、补光灯、麦克风等&#xff0…

三种方法加密图纸!2024如何对CAD图纸进行加密?分享给你

“机事不密则害成,是以君子慎密而不出也。” 此言道出了保密的重要性,尤其是在今日数字化时代,图纸作为设计领域的核心资料,其安全性更是至关重要。 CAD图纸作为设计行业的基石,不仅承载着设计师的心血与智慧&#x…

超详细前端AI蔬菜水果生鲜识别应用优化之路

目录 背景原理技术选型技术栈 构造封装优化模型选择让模型加载更快张量释放 让indexddb更快将图片拆出单独建表特征向量降维 后续规划模型的下发更新模型的增强学习识别数据的上传和下发 背景 先定性,带AI识别的生鲜收银机早就上市了,目前学习的只能说是…

第48课 Scratch入门篇:仙女棒

仙女棒 故事背景: 夜空中,仙女棒划破天空,划过一条一条美丽的光线!! 程序原理: 自己动手设计一个动态变化的角色,实现美丽的仙女棒;仙女棒移动的轨迹,是通过背景的重叠而产生的,这里就是我们今天要学习的一个新知识:“图章”,图章跟我们平时盖章类似,就是复制一个…

C++概观:并发及实用工具(A Tour of C++: Concurrency and Utilities)

(说明:本章内容讲的主要是 c11 标准相对于之前的标准新增加的内容。本书作者是 c 之父 Bjarne Stroustrup,这位作者的行文风格就是站在c的设计者角度进行讲解,内容极其丰富,但并没有像传统编程书籍那样事无具细地罗列知…

无人机之云台的重要性

无人机云台在无人机技术中占据着举足轻重的地位,其重要性体现在多个方面: 首先,无人机云台是确保拍摄稳定性的关键组件。无人机在飞行过程中,尤其是遇到风力干扰或进行复杂飞行动作时,机身容易产生震动和晃动。而云台的…

Nginx简介和安装

一、 Nginx 简介 1、Nginx概述 Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能 力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx 网站用户有:百度、京东…

【Oracle点滴积累】解决ORA-29913和KUP-04095: preprocessor command的方法

广告位招租! 知识无价,人有情,无偿分享知识,希望本条信息对你有用! 今天和大家分享ORA-29913: error in executing ODCIEXTTABLEFETCH callout和KUP-04095: preprocessor command错误的解决方法,本文仅供参…

基于FastCAE平台开发的多物理场仿真软件开发分享

开发目的 基于FastCAE平台开发的多物理场仿真软件,是为了更有效地控制多物理场耦合问题中的重要特征参数,如流体与固体的相互作用力和温度分布,进行了耦合分析。通过该耦合分析,能够深入研究多物理场相互作用的特性,并…

车载T-Box通信稳定性弱网测试方案

作者介绍 T-Box(Telematics Box,车载终端)是一种安装在汽车上的控制器,用于实现车辆的远程监控、数据采集、通信和控制等功能。T-Box是连接汽车与外部世界的关键节点之一,在汽车网联中扮演着重要的角色。通过T-Box&…