接口自动化测试

APITEST: 接口自动化测试

目录结构介绍:

conf目录:用来存放项目运行环境、执行环境相关的配置参数

testsuite目录:测试用例在此目录编写,pytest默认约定test开头的文件和方法为测试用例,不满足条件的不会被执行,可按照功能模块建立文件夹对测试用例进行分类

utils目录:把与业务无关的实用程序放到此目录,比如自己写的辅助方法

.gitignore文件:git提交忽略文件配置文件

conftest.py文件:pytest的fixture方法可以写在这里,测试用例使用其中的fixture不需要使用import显示引入

pytest.ini文件:可以针对pytest进行一些配置,如日志格式和级别等

requirements.txt文件:把需要安装的python第三方库写入此文件,需要使用该工程时执行pip install -r requirements.txt,可一次性安装全部依赖

runall.py文件:执行全部用例入口,用来给jenkinsCI/CD工具拉起自动化任务使用

data目录:存放测试数据

results: 存放测试结果数据和测试报告

API:存放接口文档

log: 存放日志 '''

 详情介绍如何新增接口测试

1、baseapi新增class Yuncheng(BaseApi)

class Yuncheng(BaseApi):host = get_env_info("yuncheng.host")def set_url(self):self.url = "http://"+self.host + self.url+ self.suffixreturn self

2、API 文件夹下新建yuncheng.py, 设置请求method,url

from API.base_api import Yunchengclass YunchengTest(Yuncheng):method = "POST"url = "/posts"suffix = ""

3、conf 配置不同环境请求的header,host

 yuncheng:host: jsonplaceholder.typicode.comheaders:Content-Type: application/json  

4、data 配置请求body,多种请求写list,无body写{}

[{"userId": 1,"title": "云程低代码平台","body": "私有化部署、定制化开发、源代码交付、欢迎在线体验。http://www.yunchegnxc.com"},{"userId": 1,"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"},{"userId": 1,"title": "qui est esse","body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"}
]

5、testsuit 文件夹下testbase 增加header的获取

class TestYuncheng():headers = get_env_info("yuncheng.headers")    

6、测试testsuit 文件夹下新增test_yuncheng.py写接口测试

from API.yuncheng import *  # 引进接口
import allure
from utils.common import get_json_data
from loguru import logger
import pytest
import datetime
from testsuite.test_base import TestYuncheng  # 引进参数@allure.feature("测试云程")
class TestCui(TestYuncheng,YunchengTest):  # 继承了基础类有了header相关@allure.story("测试一次性请求")def test_cuilll(self):data = get_json_data(r"./data/yuncheng/set_yuncheng.json")  # 变化的是body请求体#  QuerySchedule继承baseapi实现了接口请求,run就是发送,res是返回数据# print("===data=====", data)# print("请求的header为=========", self.headers)logger.add("./log/{}.log".format(datetime.date.today()), rotation="00:00")# logger.info("headers " + str(self.headers))for body in data:# logger.info("body " + str(data))res = YunchengTest().set_url().set_headers(self.headers).set_json(body).run()# print("===res=====", res.response.json())logger.info('\n'+"url: " + self.url+'\n' +"headers: " + str(self.headers)+'\n'+"body: " + str(data)+'\n'+"返回数据:  " + str(res.response.json()))pytest.assume(res.response.json()['userId'], "1")@allure.story("测试多次请求")# 与上面区别是每份数据是一次用例,上面整体是一次用例@pytest.mark.parametrize("data", get_json_data(r"./data/yuncheng/set_yuncheng.json"))def test_cui(self, data):with allure.step("一步步测试"):# print("请求的header为=========", self.headers)# print("===data=====", data)logger.add("./log/{}.log".format(datetime.date.today()), rotation="00:00")# logger.info("headers "+str(self.headers))# logger.info("body "+str(data))res = YunchengTest().set_url().set_headers(self.headers).set_json(data).run()# print("===res=====", res.response.json())logger.info('\n'+"url: " + self.url+'\n' +"headers: " + str(self.headers)+'\n'+"body: " + str(data)+"返回数据:  " + str(res.response.json()))pytest.assume(res.response.json()['userId'], "1")

注:接口不涉及登录,如涉及登录则在fixture,fixture_login 设置登录接口相关

7、runall.py 设置运行用例

import os
import pytestif __name__ == "__main__":# pytest.main(["./testsuite/test", "-s", "-v", "--alluredir=./results/data", "--clean-alluredir"])# os.system('allure generate ./results/data/ -o ./results/report --clean')# os.system('allure open -h 127.0.0.1 -p 8883 ./results/report')pytest.main(["-vs", "./testsuite/test/test_yuncheng.py"])

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

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

相关文章

(一)相机标定——四大坐标系的介绍、对应转换、畸变原理以及OpenCV完整代码实战(C++版)

一、四大坐标系介绍 1,世界坐标系 从这个世界(world)的视角来看物体 世界坐标系是3D空间坐标,每个点的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw​,Yw​,Zw​)表示 2,相机坐标系 相机本身具有一个坐标系&…

从CRUD到高级功能:EF Core在.NET Core中全面应用(三)

目录 IQueryable使用 原生SQL使用 实体状态跟踪 全局查询筛选器 并发控制使用 IQueryable使用 在EFCore中IQueryable是一个接口用于表示可查询的集合,它继承自IEnumerable但具有一些关键的区别,使得它在处理数据库查询时非常有用,普通集…

STM32之CubeMX图形化工具开发介绍(十七)

STM32F407 系列文章 - STM32CubeMX(十七) 目录 前言 一、CubeMX 二、下载安装 1.下载 2.安装 3.图解步骤 三、用户界面 1.项目配置 2.项目生成 3.项目文件解释 4.新建工程 5.查看原工程 四、FAQ 总结 前言 STMCube源自意法半导体&#xf…

idea中远程调试中配置的参数说明

Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号&#xf…

gitlab使用多数据库

1. 说明 默认情况下,GitLab 使用一个单一的应用数据库,称为主数据库。为了扩展 GitLab,您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后,GitLab 将使用第二个应用数据库用于 CI/CD 功能,称为 CI 数据库…

【博客之星2024】技术创作与成长的全景回顾与突破 —— “千里之行,始于足下“

《热爱生命》 汪国真 我不去想是否能够成功 既然选择了远方 便只顾风雨兼程 我不去想能否赢得爱情 既然钟情于玫瑰 就勇敢地吐露真诚 我不去想身后会不会袭来寒风冷雨 既然目标是地平线 留给世界的只能是背影 我不去想未来是平坦还是泥泞 只要热爱生命 一切,都在意料…

leetcode刷题记录(七十二)——146. LRU 缓存

(一)问题描述 146. LRU 缓存 - 力扣(LeetCode)146. LRU 缓存 - 请你设计并实现一个满足 LRU (最近最少使用) 缓存 [https://baike.baidu.com/item/LRU] 约束的数据结构。实现 LRUCache 类: * LRUCache(int capacity)…

两份PDF文档,如何比对差异,快速定位不同之处?

PDF文档比对是通过专门的工具或软件,自动检测两个PDF文件之间的差异,并以可视化的方式展示出来。这些差异可能包括文本内容的修改、图像的变化、表格数据的调整、格式的改变等。比对工具通常会标记出新增、删除或修改的部分,帮助用户快速定位…

TongESB7.1.0.0如何使用dockercompose运行镜像(by lqw)

文章目录 安装准备安装 安装准备 1.安装好docker和dockercompose: docker、docker-compose安装教程,很详细 2.上传好安装相关文件 安装 使用以下命令导入管理端镜像和运行时镜像 docker load -i tongesb_manage_7100.tar docker load -i tongesb_se…

Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)

Java基于SSM框架的社区团购系统小程序设计与实现 博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 &#x1f4…

【Linux】gawk编辑器二

一、变量 gawk编程语言支持两种变量:内建变量和自定义变量。 1、内建变量 gawk使用内建变量来引用一些特殊的功能。 字段和记录分隔符变量 数据字段变量 此变量允许使用美元符号($)和字段在记录中的位置值来引用对应的字段。要引用记录…

【Linux】Linux入门(三)权限

目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类(人)file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件,文件夹所属用户和用户组 权限掩码umask(权限掩码) 粘滞位 前提 请先看下面这…

Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?

Diffusion Models专栏文章汇总:入门与实战 前言:视频在传输过程中常常因为各种因素(如恶劣天气、噪声、压缩和传感器分辨率限制)而出现质量下降,这会严重影响计算机视觉任务(如目标检测和视频监控)的性能。现有的视频修复方法虽然取得了一些进展,但通常只能针对特定的退…

生产环境中常用的设计模式

生产环境中常用的设计模式 设计模式目的使用场景示例单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点- 日志记录器- 配置管理器工厂方法模式定义一个创建对象的接口,让子类决定实例化哪个类- 各种工厂类(如视频游戏工厂模式创…

点云目标检测训练数据预处理---平面拟合与坐标转换(python实现)

在做centerpoint训练之前,需要先对点云数据进行标注,然后制作kittti数据集。不用nuScenes或者waymo数据集的理由也很简单,因为麻烦,没有kitti数据集直观。 kitti数据集的格式如下,可以看到数据集中只有航向角&#xff…

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇:一文大白话讲清楚啥是个webpack第二篇:一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇,Loader的配置…

Python基于OpenCV和PyQt5的人脸识别上课签到系统【附源码】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

2024年第十五届蓝桥杯青少组国赛(c++)真题—快速分解质因数

快速分解质因数 完整题目和在线测评可点击下方链接前往: 快速分解质因数_C_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/cpp/show-3781.htmlhttps://www.hixinao.com/tiku/cpp/show-3781.html 若如其他赛事真题可自行前往题库中心查找,题…

使用Edge打开visio文件

使用Edge打开visio文件 打开Edge浏览器搜索‘vsdx edge’ 打开第一个搜索结果 Microsoft Support 根据上述打开的页面进行操作 第一步:安装Visio Viewer 第二步:添加注册表 桌面新增文本文件,将下面的内容放入新建文本中,修…

AT8870单通道直流电机驱动芯片

AT8870单通道直流电机驱动芯片 典型应用原理图 描述 AT8870是一款刷式直流电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达3.6A的峰值电流双向控制电机。利用电流…