接口自动化测试实战之智能场景如何攻破

news2024/11/15 4:09:37

智能场景的意思就是怎么样才能让接口自动化智能化,让使用接口框架的人越来越没有要求,大街上随便拉一个人来,一分钟了解框架的使用,就能完美地去完成接口自动化测试。

1.找出公司要求我们测试的接口的共同点

假设有10个接口,每个接口的参数名不同但格式是相同的。我们就可以封装一个生成入参的模板的函数,填写初始参数运行,就能生成一个模板。

测试人员只要在模板中填写测试用例了。那这些编写测试用例的人员是不用学习计算机语言,框架思维的。在工作中使用得比较多的就数据驱动测试思维(DDT)。

import unittest

from selenium import webdriver

from selenium.webdriver.common.by import By

from time import sleep

from confg.loginconf import *

from pageobject.loginpage import *

from ddt import ddt,data,unpack

from common.read_excel import readexcels

#

# tc=[['login001','用户名密码为空的测试','','','1','用户名不能为空!'],

# ['login002','验证码为空的测试','13800138006','123456','','验证码不能为空!'],

# ['login003','用户名密码不匹配的测试','13800138001','12345','1','账号不存在!']]

#外部列表中的每个元素(内容列表)是一条测试用例

#从excel中获得数据源

dt=readexcels('../datacase/tpshop_login.xlsx')

@ddt

class tpshop_login_ddt(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Chrome()

self.driver.maximize_window()

self.driver.get(url_test)

def tearDown(self):

self.driver.quit()

@data(*dt)   #每次转一条测试用例进来,第一次的tc=['login001','用户名密码为空的测试','','','1','用户名不能为空!']

def test_tpshop_login_not(self,cc):#设置一个变量来接收cc每次转进来的测试用例

'''用户名与密码都为空'''

# 操作步骤

print(cc[0],cc[4], cc[5], cc[6],cc[7])

login_test(self.driver, cc[4],cc[5], cc[6])

# 断言

sleep(2)

self.assertEqual(login_except_ec(self.driver),cc[7])

print('{}执行完成...'.format(cc[1]))

#logger.info('test_username_password_is_empty执行成功')

2.找出多接口之间关联关系

单接口的自动化是比较简单的。多接口关联自动化就比较复习了多接口关联的目的在于,模拟用户真实操作行为,提前梳理该功能涉及的全部接口,包含前置业务接口、后置业务接口以及接口之间的依赖关系,通过将用户行为涉及到的接口全部关联在一起完成的自动化检测,提前发现由于后端服务异常导致用户功能使用异常的场景。

如果业务有做UI自动化检测,那我们接口检测的可与业务UI错开来,提高检测试效率,提早发现问题和提高工作质量。

接口关联如何做到智能化呢?

主要还是要对接口处理机会非常了解,提前发现接口与接口接关联的算法,才能有有效的应对措施。

 

IT问答库icon-default.png?t=M85Bhttp://www.mobiletrain.org/qa/

例如禅道登录接口和新增产品。必需要登录成功后才能新增产品。新增产品又有很多个不同的测试用例,如果执一个新增产品的用例就要登录一下次那么代码的执行效率就大的降低了。在UINTTEST框架中就可以把有的共同代码部分封装起来,全部放入setupclass中.

import unittest

from selenium import webdriver

from pageobject.DS_reg import *

from common.mysql_s import opendb

from loguru import logger

import time

from common.try_fengzhuang import try_fz

url="http://127.0.0.1:8082/dsmall/public/index.php/admin/login/index.html"

class DSmall_add_member(unittest.TestCase):

@classmethod

def setUpClass(cls):

cls.driver=webdriver.Chrome()

cls.driver.maximize_window()

cls.driver.get(url)

cls.driver.implicitly_wait(30)

DSmall_login(cls.driver)

@classmethod

def tearDownClass(cls):

cls.driver.quit()

def test_member_emptyinfo(self):

'''全部信息为空测试'''

input_member_info(self.driver,'','','','','','')

try:

self.assertEqual(self.driver.find_element(By.ID,"member_name-error").text,'会员名不能为空')

self.assertEqual(self.driver.find_element(By.ID, "member_password-error").text, '密码不能为空')

self.assertEqual(self.driver.find_element(By.ID, "member_email-error").text, '电子邮箱不能为空')

except Exception:

logger.info('执行失败')

else:

logger.info('执行成功')

clear(self.driver)

接口测试过程中会遇到各种各样的场景,实现起来也很有意思,但我们一定要会边工作边思考,把怎样让工作更智能化,怎样让效率更高,贯穿整个工作过程。

IT问答库 icon-default.png?t=M85Bhttp://www.mobiletrain.org/qa/

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

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

相关文章

【附源码】计算机毕业设计JAVA移动电商网站

【附源码】计算机毕业设计JAVA移动电商网站 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

(一)进程与线程

黑马程序员深入学习Java并发编程,JUC并发编程全套教程_哔哩哔哩_bilibili 一、进程与线程(P5) 1. 进程 (1)程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至…

查阅标准文档以及effective c++作者文笔 真正搞懂万能引用和引用折叠以及完美转发

在解释任何东西以前 我都必须要强调 我们为什么需要这个东西 如果一个东西我们都是不需要的 那么我们解释他干嘛? 假定你彻底了解了一个东西 但是你并不知道你为什么需要他 他能解决什么问题 那你仅仅就只是背了一段理论性的东西 对于你本人的成长毫无用处 这里我们一次性讲懂…

sqli-labs/Less-58

这一关只有五次机会了 哎怎么办啊 那就只能找出每轮的共同点 这一关肯定不能一轮就完成所有的操作 至少得分个两轮进行操作才可以 前一轮进行注入类型的获取 后一轮进行各种爆破操作 分配好了 首先去判断一下注入类型是否属于数字型注入 输入如下 id1 and 12 回显如下 不属于…

Web大学生网页作业成品 基于HTML+CSS+JavaScript---个人介绍5页 带视频 带报告

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | ‍个人博客网站 | ‍个人主页介绍 | 个人简介 | 个人博客设计制作 | 等网站的设计与制作 | 大学生个人HTML网页设计作品 | HTML期末大学生网页设计作业…

大规模 Spring Cloud 微服务无损上下线探索与实践

作者:十眠 “从一次常见的发布说起,在云上某个系统应用发布时,重启阶段会导致较大数量的 OpenAPI、上游业务的请求响应时间明显增加甚至超时失败。随着业务的发展,用户数和调用数越来越多,该系统又一直保持一周发布二…

CAD特殊符号,你不一定会!!!

在CAD软件中,有时候会输入一些特殊的符号。比如在标明高低差的时候会输入“”号,在标明管子或者钢筋的直径为输入直径符号“”,为了标明角度值需要输入符号“”,那么这些符号怎么快速的绘制出来呢?我们一起用CAD梦想画…

专利解析|多维建模结合AI识别商品特征的方法

企业采购数字化转型的背景 国家“十四五”规划纲要提出要推进产业数字化转型,在供给侧结构性改革大背景下,国家出台了《企业数字化采购实施指南》,大大促进了企业采购电商化的发展。企业电商化采购能提高企业的采购效率、加快物流速度、降低…

m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 软件无线电在无线通信领域被称为是自模拟通信过渡到数字通信之后的又一次革命,在军用和民用方面都有着广阔的应用。它是一种新的无线通信技术,基于通用的可编程的…

【JAVA高级】——封装JDBC中的DaoUtils工具类(Object类型方法)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

【文献整理】基于深度强化学习的知识图谱推理研究

目录DeepPath背景Core贡献几个要点:Training pipeline结论DIVINE背景Core贡献预备知识DIVINE推理过程模型文献整理基于综述论文:基于深度强化学习的知识推理研究进展综述_宋浩楠,赵刚,孙若莹 文中对知识图谱推理进行如下分类&…

SpringSecurity(十七)---OAuth2的运行机制(下)-实现一个简单的单点登录应用程序

一、前言 本章实现第一个使用带有Spring Boot和Spring Security 的OAuth2框架的应用程序。这个示例将展示如何将OAuth2应用到Spring Security中,并阐释你需要了解的一些接口的内容。顾名思义,单点登录(SSO)应用程序是通过授权服务…

如何使用一台电脑远程控制多台电脑

如今,远程控制软件已经广泛应用于我们的日常生活中。我们使用远程桌面软件远程控制另一台电脑来完成我们的工作和学习。在某些情况下,我们可能还需要同时远程控制多台电脑。例如: 您是一名培训师,正在寻找远程访问软件来同时远程…

[激光原理与应用-15]:《激光原理与技术》-1- 什么是激光,激光概述

目录 第1章 什么是激光 1.1 什么是激光 1.2激光在生活中应用 第2章 激光的特点 2.1 方向性好(平行性、直线性) 2.2 单色性好(颜色纯度高) 2.3 相干性比太阳光好 2.4 亮度高 2.5 能量极大 第3章 光产生的方式与核心概念 …

又爆冷了啦,日本半场逆转德国,怎么利用共享经济搅乱世界杯格局

近日世界杯热点逐渐升高,在23号晚上亚洲劲旅日本以2-1逆转多次捧得大力神杯的德国队,此前德国还从未输过日本队,因此德国再次吃到闭门羹,爆出了本届世界杯开赛以来既阿根廷惨败的又一大冷门。赛后,日本全国人民共同庆祝…

Web(二)html5基础-超链接的应用(知识训练和编程训练)

web知识训练_html5_超链接的应用 web编程训练_html5_超链接的应用 第1关_创建热字超链接 编程要求 在右侧编辑器中的Begin - End区域内补充代码,创建热字超链接,具体要求是: 1.链源文字为“听音乐找酷我”。 2.链宿地址为“https://www.ku…

FPGA——多路选择器实现按键控制LED灯的亮灭

文章目录前言一、多路选择器二、绘制模块框图及波形图三、Verilog HDL代码及测试代码四、创建工程五、仿真六、上板验证1、分配引脚2、烧录七、效果演示八、总结前言 软件:Quartus Prime Standard 18.0仿真软件:modelsim 10.5代码编写软件:V…

【虹科新品】 HK-MR430330绝对式光纤编码器介绍合集(下)

HK-MR430系列ZapFREE光纤位置传感器是一款外形小巧、具有13位单圈分辨率的旋转位置传感器。MR430设计新颖,开发了新的应用和OEM产品功能,这在以前的电子传感器是无法实现的。该传感器100%无源,不受EMI、RFI、微波和磁场的影响。创新型全绝缘设…

我参加NVIDIA Sky Hackathon 后端修改

文件架构 前面两个分别是执行语音识别和图片识别的代码templates 存放的是网页的模板, 前端将文件写在这里即可uploads 存放的是上传至后台的文件server.ipynb 用于启动 flash 服务器app.py 内是用 flash 写的 Python 后端install_tools.sh 是用于安装相关工具的 sh…

(十四)Spring之回顾代理模式

文章目录回顾代理模式动态代理常用技术CGLIB动态代理技术上一篇:(十三)Spring之JdbcTemplate 回顾代理模式 参考:代理模式Proxy Pattern 不用JDK的动态代理,手写JDK动态代理 动态代理常用技术 在程序运行阶段&…