从零开始,轻松实现Python接口自动化测试(基于PyCharm)

1.接口清单整理

(1)请求:

  • 请求URL
  • 请求方法
  • 请求参数
  • 请求报文

(2)响应

  • 状态码
  • 响应数据

2.用例设计

(1)单接口测试用例

  • 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
  • 注意:单接口颗粒度放的比较小(以测试数据为颗粒度)

(2)多接口测试用例

  • 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
  • 注意:多接口颗粒度以每个接口为基础,每个接口内所设计的数据可以通过参数化来解决
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn888】

3.测试用例转化为代码实现

工具:Pycharm

项目搭建-自动化测试目结构

api:基于项目模块,一个模块建立一个模块文件

case:业务层的代码,基于unittest框架去执行test方法

data:测试数据、测试的预期结果、参数化 存储文件

report:生成的报告

tools:如果中间使用第三方工具,就把第三方工具放在里面

run_suit.py:运行入口,运行测试套件,执行用例,生成报告

(1)接口对象层封装(api)

以手机验证登陆为例

api_login.py

# 导包:               
import requests

# 新建类:            
class  ApiLogin(object):    #类名:以大驼峰的形式把模块名称搬进来

# 新建方法:               
    def api_post_login(self,url,mobile,code):

# headers定义:                 
         headers={“Content-Type”:“application/json”}

# 定义data报文:                
         data={“mobile”:mobile,“code”:code}

# 调用post并返回响应对象:
         return request.post(url,headers=headers,json=data)     
#url、mobile、code最后都需要从data数据文件读取出来,做参数化使用,所以这里使用动态传参

(2)接口业务层实现(case)

test_login.py

# 导包:
import unittest
from api.api_login import ApiLogin

# 读取数据:
def get_data():
    data=ReadJson("login.json").read_json()
    arrs=[]
    arrs.append(data.get("url")
            data.get("mobile")
            data.get("code")
            data.get("except_result")
            data.get("status_code"))
    retrn arrs

# 新建测试类:
class TestLogin(unittest.TestCase):

# 新建测试方法:
     @parameterized .expend(get_data())
     def test_login(self,url,mobile,code,except_result,status_code):

# 调用登陆方法:
     s=ApiLogin().api_post_login(url,mobile,code)

# 断言 响应信息及状态码:
     self.assertEquals(“except_result”,s.json()[‘message’] )
     self.assertEquals(status_code,s.status_code )

if _name_=='_main_'
  unittest.main()

(3)登陆数据json编写(data)

login.json

{
     url:“...”
     mobile:“...”
     code:“...”
     except_result:“...”
     status_code:“...”
}

(4)读取json工具(tools)

read_json.py

# 导包:
import json

# 打开json文件并获取文件流(使用函数进行封装、使用参数替换静态文件名):
class ReadJson(object):
    def _init_(self,filename)
        self.filepath="../data/"+filename
    def read_json(self):
        with open(self.filepath,"r',encoding="utf-8") as f:
            return json.load(f)  #调用load方法加载文件流

if _name_=='_main_'
  datas= ReadJson(“login.json”).read_json()
# #新建空列表,添加读取json数据
  arrs=[]
  arrs.append(data.get("url")
            data.get("mobile")
            data.get("code")
            data.get("except_result")
            data.get("status_code"))
  print(arrs)
            

(5)运行主入口实现

run_suite.py

# 导包:
import unittest
import time
from tools.HTMLTestRunner import HTMLTestRunner  
#第三方工具生成HTMLTestRunner生成测试报告, 前面是模块名称后面是类名,

# 组装测试套件:
suite=unittest.defaultTestLoader.discover(“./case”,pattern=“test.py”)

# 指定报告存放路径及文件名称:
file_path=“./report/{}.html”.format(time.strftime(“%Y_%m_%d_%H_%M_%S”))

# 运行测试套件并生成测试报告:
with open(file_path,"wb") as f:
    HTMLTestRunner(stream=f).run(suite)

END今天的分享就到此结束了!点赞关注不迷路!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PySpark开发环境搭建常见问题及解决

PySpark环境搭建常见问题及解决 1、winutils.exe问题2、SparkURL问题3、set_ugi()问题 本文主要收录PySpark开发环境搭建时常见的一些问题及解决方案,并收集一些相关资源 1、winutils.exe问题 报错摘要: WARN Shell: Did not find winutils.exe: {} ja…

配置集群免密登录

文章目录 前言配置集群免密登录1. 设置主机名与 IP 地址的映射关系2. 生成 SSH 密钥对3. 将公钥复制到集群节点4. 测试免密登录5. 配置节点之间互相免密登录 总结 前言 本文介绍了如何配置集群之间免密登录,以便在搭建集群环境时方便地进行节点之间的通信。通过设置…

力扣面试经典150题——Unix简化路径

https://leetcode.cn/problems/simplify-path/description/?envTypestudy-plan-v2&envIdtop-interview-150 思路:将串以/分割,判断字符串是…/./其他,进行入栈和出栈,最后留下的就是结果,拼装一下就好了。 三个…

Python的内置数据类型有哪些?

目录 一、数字类型 二、字符串类型 三、列表类型 四、元组类型 五、字典类型 六、集合类型 七、布尔类型 八、None类型 九、迭代器和生成器 总结 Python是一种高级编程语言,它具有丰富的内置数据类型。这些数据类型包括数字、字符串、列表、元组、字典、集…

Tubulysin F微管蛋白抑制剂 F 368870-67-1星戈瑞

Tubulysin F 是从粘细菌 Archangium geophyra 和 Angiococcus disciformis 中分离出来的天然产物。Tubulysin F 是一种具有细胞毒性活性的微管蛋白抑制剂,可抑制微管蛋白聚合并导致细胞周期停滞和细胞凋亡。 英文名称:Tubulysin F 中文名称:…

华为认证 | 11月底这门HCIP认证正式发布!

华为认证openGauss高级工程师HCIP-openGauss V1.0(中文版)自2023年11月30日起,正式在中国区发布。 01 发布概述 基于“平台生态”战略,围绕“云-管-端”协同的新ICT技术架构,华为公司打造了覆盖ICT领域的认证体系&…

C //例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。

C程序设计 (第四版) 谭浩强 例10.2 例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法:使用指针,函数的模块化设计,动态分…

基础课18——表格问答引擎

1.定义 表格问答引擎是一种针对结构化二维表的知识问答引擎,它可以基于表格内容快速抽取信息,并回答用户提出的问题。表格问答引擎的核心技术包括自然语言处理和机器学习等,它通过对表格数据的处理和分析,能够实现自动化问答的目…

外包干了3年,技术退步太明显了。。。

简单的说下,我大学的一个同学,毕业后我自己去了自研的公司,他去了外包,快3年了我薪资、技术各个方面都有了很大的提升,他在外包干的这3年人都要废了,技术没一点提升,学不到任何东西,…

软件工程之架构设计

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、架构设计的目的 1.什么是复杂的软件项目 复杂的软件项目通常有两个特点: 需求不确定 技术复杂 技术的复杂性主要体现在四个方面…

【每日一题】最小化旅行的价格总和

文章目录 Tag题目来源题目解读解题思路方法一:深搜动态规划 写在最后 Tag 【深搜动态规划】【树】【2023-12-06】 题目来源 2646. 最小化旅行的价格总和 题目解读 有一棵无向、无根的树,树中的节点从 0 到 n-1,每个节点有一个关联的价格&a…

【AntDB 数据库】国产数据库肇始之独具特色的场景需求

影响国产数据库源起、发展的因素有很多,除了数据库本身对国家和组织的重要战略性地位、市场趋势向好等因素外,还有哪些关键因素呢?今天AntDB数据库就跟大家一起回顾、探求一下我国最早一批国产数据库起源背后独具特色的场景需求。 过去40年&…

C++红黑树封装set和map(很详细)

前言 在前面,我们学习了红黑树。(没学过红黑树直接看会很吃力)set和map的底层就是红黑树,现在我们要用这棵树来封装STL里面的容器:set和map。 下面是之前讲过的红黑树,他只是普通的“Key”模型,适合封装set…

技术博客:Vue中各种混淆用法汇总

技术博客:Vue中各种混淆用法汇总 摘要 本文主要介绍了在Vue中使用的一些常见混淆用法,包括new Vue()、export default {}、createApp()、Vue.component、Vue3注册全局组件、Vue.use()等,以及如何使用混淆器对代码进行加固,保护应…

Opencv库如何检测图片中鸡蛋数量

Opencv库检测图片中鸡蛋数量 由于需要写一个检测鸡蛋数量的程序,用了几个opencv中的经典方法,实现了图片中鸡蛋的检测。在一步步实现的同时,同时说明每个方法的用途。希望能给学习opencv的小伙伴一些帮助。下图为原始图和实现后的检测边框。…

csdn-添加目录

只需一句,根据文章标题层级自动生成目录 在文章内添加下面这句会自动生成目录 [TOC](此处填写目录的标题)

【CMake入门】第一节——CMake的安装与简单样例

CMake——Cross platform Make CMake是一个开源的跨平台自动化建构系统,用来管理程序构建,不相依于特定编译器,不用亲自编写Makefile。需要编写CMakeList.txt文件来定制整个编译流程可以自动化编译源代码、创建库、生成可执行二进制文件等 …

msvcr110.dll丢失的解决方法有哪些-常见方法教程

我们在日常使用电脑中经常遇到各种问题,比如系统文件丢失是最常见的,其中msvcr110.dll丢失也是非常常见的问题,那么msvcr110.dll文件为什么会丢失,丢失对电脑有什么影响呢,丢失了有什么解决方法?今天小编就…

【MySQL】聚合函数和分组(查找)

聚合函数分组分组聚合如何显示每个部门的平均工资和最高工资显示每个部门的每种岗位的平均工资和最低工资显示平均工资低于2000的部门和它的平均工资(SMITH员工不参与)where 和 having 的区别 聚合函数 函数说明COUNT([DISTINCT] expr)返回查询到的数据的 数量SUM([DISTINCT] …

深度学习助力手写识别OCR软件的发展与应用

随着人工智能和深度学习技术的不断发展,手写识别OCR软件的技术也在不断进步。目前,市场上已经有一些基于深度学习的手写识别OCR软件,可以对手写文字进行自动识别和转换。 首先,我们来介绍一下基于深度学习的手写识别OCR软件的基本…