Python自动化测试|如何解决前置模块及数据依赖(二)

在做接口自动化测试时,遇到下面这个疑惑,然后再群里请教了大家,讨论如下,可以参考下:

讨论1:

上海—橙子探索测试 10:12:34
自动化测试中,提现接口一般会依赖前置功能实名认证、绑卡、设置交易密码等才能进行提现操作或依赖前置接口实名认证、绑卡、设置交易密码的响应数据(姓名、身份证、卡号、交易密码)等 ,这只是简单的实例,可能实际场景中远比这种复杂的多,所以进行提现接口测试时,需先构建完成前置功能实名认证、绑卡、设置交易密码且构建前置接口的响应数据,一般调前置功能接口或用sql构造前置功能数据两种方法,那种方法更合理方便呢?
风い 10:14:00
要保证用例独立运行的能力  只能麻烦
z 10:14:56
做成场景测试用例
天 10:19:08
上海—橙子探索测试 自动化测试中,接口4依赖前置接口顺序或数据1 2 3 ,接口5依赖前置接口顺序或数据1 2 3 4,(比如:提现 可能需要先设置登录密码、再实名认证,才能提现),所以接口4时,需要构建前置接口顺序或数据1 2 3,接口5时,需要构建前置接口顺序或数据1 2 3 4 …… 这样的话,每个接口里都存在大量重复前置sql侯建,感觉太麻烦了,有什么好的方法吗?
@上海—橙子探索测试 如果测试环境中,数据不会被清理,可以把参数写死。否则的话,只能通过接口来造前置条件的数据,来保证脚本的健壮性
上海—橙子探索测试 10:39:53
@天 嗯  我目前是通过sql构建数据的  用完又清掉 所以导致每个用例都要重新构造
上海—橙子探索测试 10:40:17
@z 场景的话那就是场景自动化了  不是单接口自动化
翡翠 10:41:08
直接调接口
翡翠 10:41:17
不行上容器,开虚拟数据库
翡翠 10:41:20
随用随删
上海—橙子探索测试 10:41:46
调接口不稳定吧  我觉得还不如sql吧
翡翠 10:42:04
的确不如sql稳定
翡翠 10:42:19
所以我说,不行上容器
翡翠 10:42:25
随用随删
天 10:43:44
你们在用docker吗
翡翠 10:43:59
我在弄
翡翠 10:44:16
还没弄好
天 10:44:59
上海—橙子探索测试 @天 嗯 我目前是通过sql构建数据的 用完又清掉 所以导致每个用例都要重新构造
@上海—橙子探索测试 你的sql会向服务器插入数据吗
天 10:46:34
我之前就想过用docker来实现,先把数据添加到docker中的数据库中。跑自动化时就切换到docker里面的数据库,执行完毕后就切换到测试环境的数据库
z 10:46:58
@上海—橙子探索测试 你这本来有就依赖关系的,除非你再数据库维护一组数据 专门用于测试这个接口,执行完毕后把数据还原
天10:48:41
z @上海—橙子探索测试 你这本来有就依赖关系的,除非你再数据库维护一组数据 专门用于测试这个接口,执行完毕后把数据还原
@zx 我以前也是这么想的,但是没有实现
zz 10:49:22
@翡翠 不行上容器,开虚拟数据库
天锥树 10:49:23
数据都是在数据库中准备好的,直接跑接口来验证逻辑,比较麻烦的是维护数据
zz 10:49:26
这是啥意思啊
天 10:49:46
什么是虚拟数据库啊
z 10:50:30
把业务熟悉后,维护起来也不是很难
翡翠 10:50:54
开个容器,容器里面有数据
翡翠 10:51:09
因为数据库是假的,你随便弄
翡翠 10:51:19
不考虑环境污染那些
翡翠 10:51:23
反正最后都要删
z 10:51:54
数据不一定要存储在数据库,可以用文本,执行前写入进去就好
z 10:52:02
执行完毕后,再删掉
zz 10:56:48
意思是我们自己copy一套生产坏境的数据库 
zz 10:57:10
跑case的时候 把业务服切到虚拟数据库来?
翡翠 10:57:49
case就在容器里面炮
翡翠 10:57:51

翡翠 10:57:58
具体你看一下docker
上海—橙子探索测试 10:58:24
@天 各种sql都会的
上海—橙子探索测试 10:59:13
增删改查
zz 11:05:19
在哪里跑有什么没关系呀
zz 11:05:31
你总得连服务器啊
天 11:15:23
上海—橙子探索测试 @天 各种sql都会的
@上海—橙子探索测试 搞那么多sql,还真不如调用接口来造数据。万一sql错了,出现的问题,开发肯定不认,而且还会是觉得浪费他们的开发时间。如果接口造的数据,有问题,绝对是代码的问题,开发跑不脱
天11:15:55
反正接口之前有依赖的自动化很麻烦
像风 11:17:28
sql性能高得多
像风 11:17:43
开发给你sql就行了啊
上海—橙子探索测试 11:19:11
嗯 各有利弊吧

讨论2:

橙子:接口自动化中,前置数据大家都是怎么准备的

橙子:我发现前置数据又是一个大头

H:前置数据?是指?传参?

橙子:比如要提现是不是要登录、实名认证-审核、绑卡-审核、充值

橙子:这只是一个示例  也许实际项目中更复杂  涉及多个系统

H:这个是 挺复杂的一个,而且还是必须的,接口之间存在很强的依赖

橙子:我们目前1个项目涉及3个系统交互的,我目前走的sql,单发现,走sql需要对业务逻辑、表关联需要非常数据,且sql之间页存在依赖,有点麻烦

H:1.从接口关联方面做,2.通过sql方面做

橙子:感觉还是sql简单点

H:嗯嗯,如果表关联很强,不建议走sql方面,除非是 把涉及的表关系理的很清楚

橙子:是的  要不然数据容易错,且如果表字段、业务一旦发生变化,sql随时需要改动

H:不过这些如果发生变化,那对应的 接口 也会有变更的,从接口方面走,也的改

 

由以上总结得出:

1、调业务接口构造前置功能数据,更合理,避免出现错误数据导致测试结果的不准确、接口会被重复调用多次 

封装被调用的独立方法,需要时直接调用,判断是否成功,如果成功,进行响应数据提取进行下一步接口用例测试;如果失败,直接报出失败的接口,不进行下一步接口用例测试

2、使用sql操作构造前置功能数据,不推荐使用,容易出现数据错误导致测试结果不准确或不稳定性、对业务熟悉度,表关联关系熟悉度要求高

根据业务关系、表之间关系封装构造前置sql和数据清理sql,再用例执行前进行前置功能数据构造调用和执行后进行测试数据清理还原,保证用例可重复执行

3、根据实际情况合理选取

由于只是针对提现接口进行测试,所以重点不关心实名认证、绑卡、设置交易密码模块,故1和2都可以

 

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

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

相关文章

django启动时同时使用Schedule启动其他程序

1、安装Schedule 打开cmd输入: pip install schedule 2、打开django项目的views.py 导入模块 from apscheduler.scheduler import Scheduler 输入如下代码: sched Scheduler() # 实例化,固定格式 # sched.interval_schedule(days1,s…

Pytest框架集成Allure定制测试报告详解(一)

Allure简介 Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。下面就Pytest如何与Allure集成做详细介绍。 Pytest框架集成Allure Pytest是Python的单元测试框架…

div里面放ul,使ul横向和纵向滚动

js代码: .infoShow{border:1px solid #000;overflow-y:auto;height:340px;}.infoShow ul{margin:0px;padding:0px;float:left;white-space: nowrap;overflow:hidden;}.infoShow ul li{float: left;text-align:left;list-style:none;display: inline;} 注意&#xf…

Pytest+Allure+Jenkins接口自动化项目实战(一)

经过一周多时间,基于pythonpytestexcelallure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行、sql读取执行、前置数据准备、后置数据清理以及测试报告生成等,环境独立运行、项目独立运行、用例独立运行、jenkins集…

服务器测试网址填写注意事项

1、若服务器和客户端都在本机,则测试ip可用127.0.0.1 2、若服务器在电脑A,客户端在电脑B,则首先A、B电脑需要在同一局域网上,然后测试网址分别为各自ip 3、若是发布在云端,则应使用0.0.0.0 4、django项目的启动命令…

Jmeter BeanShell取样器操作变量(一)

vars: 引用Jmeter线程的局部变量,将 局部变量 改为 全局变量 亦可达到引用全局变量的效果, 连通Jmeter 和 beanshell string user vars.get("user")//获取变量,保存变量 vars.put(String key, String value&#xf…

echarts3 loading动画无法去除解决方案

解决方案一: 不使用showloading,判断传入数据是否为空。 若数据为空,覆盖一层div。 若数据不为空,则隐藏div 解决方案2: 利用echarts的graphic。初始化是加入graphic。有数据时再利用id移除掉graphic。 初始化时&…

Jmeter Beanshell采样器调用JAVA方法(二)

BeanShell Sampler调用添加的java方法 1、BeanShell Sampler里添加java方法 public static String test() {vars.put("jmeter1","111");vars.put("jmeter2","222");vars.put("jmeter3","333");vars.put("j…

grpc服务器和客户端互传数据

一、客户端给服务器传数据 1、data.proto syntax proto3; // 服务定义 service data{// 函数定义 data_request参数 data_reply返回数据rpc serving(data_request) returns (data_reply) {} } message data_request{string cmd 1; } message data_reply{string values 1; } …

Jmeter BeanShell采样器提取接口响应并传递(三)

1、将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2、CSV 数据文件设置多个手机号 3、添加登录接口,${mobile}调用2种的mobile值 4、登录接口响应数据 5、BeanShell 取样器提取登录接口响应数据 //导入json包 import com.alibaba.fastjson.JSON…

pymysql.err.InternalError: (1054, Unknown column '27D24A3B' in 'where clause')之错误解决

原代码: query_image_path1SELECT imageTempFilename_0,imageTempFilename_1 FROM %s% tablename query_image_path2 where IDprojectTemp%s and IDproject%s and cameraID%s and imageflag%s%(IDprojectTemp,IDproject,cameraID,imageflag) query_image_path_sqlq…

Jmeter BeanShell采样器提取接口响应写入csv文件(四)

1、调用登录接口获取response数据 {"code":0,"msg":"成功","data":{"token":"bearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9tZW1iZXItYXBpLnN0MS50ZXN0LmxhbnhpbmthLmNvbVwvMi4wXC91c2Vyc1wvb…

js 给动态li添加动态点击事件

一、给动态li添加动态点击事件 试了网上的on,live,bind绑定&#xff0c;都不起作用。最后看到https://bbs.csdn.net/topics/390414057 上的代码。试了一遍&#xff0c;demo ok。 附上demo&#xff1a; <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/…

Jmeter JDBC Request执行多条SQL语句

之前写过Jmeter操作mysql的文章https://blog.csdn.net/qq_36502272/article/details/88891873今天我们再看下如何操作多条sql语句 1、添加JDBC Connection Configuration并配置 Database URL为MySQL的连接串&#xff0c;如果要执行多条SQL语句&#xff0c;后面还要添加“?al…

Python使用HMACSHA1加密生成签名

按key升序&#xff0c;key不为sign&#xff0c;value不为空&#xff0c;再把key和value拼装成xa&yb格式&#xff0c;然后使用HmacSHA1算法生成签名 import json,hashlib,hmac,base64def sign(data):date_newfor key,value in sorted(data.items()):if key!"sign"…

sql常见语句记录

1、查询sql中数据不为空并且不为null SELECT * FROM 表名 WHERE 字段名 IS NOT NULL AND 字段名 <> ; # ‘’表示为空

Pyhon列表排序(升序和降序)

一、sort()方法&#xff1a; list.sort(cmpNone, keyNone, reverseFalse) cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。 key -- 主要是用来进行比较的元素&#xff0c;只有一个参数&#xff0c;具体的函数的参数就是取自于可迭代对象中&#xff0c;指定可迭…

mysql deadlock found when trying to get lock暴力解决

如若你在运行代码时出现此问题&#xff0c;那么此博客可以略过了。 如若你也不知道怎么操作后&#xff0c;突然对表进行增删查改的操作后&#xff0c;出现此问题&#xff0c;那么采用暴力解决法 方案一&#xff1a; 1、查询是否锁表 show OPEN TABLES where In_use >0; …

Pytest Hooks方法之pytest_runtest_makereport获取测试用例结果

pytest提供的钩子(Hooks)方法之pytest_runtest_makereport&#xff0c;可以更清晰的了解用例的执行过程&#xff0c;并获取到每个用例的执行结果。 一、Hook 方法之 pytest_runtest_makereport源码&#xff1a; hookspec(firstresultTrue) def pytest_runtest_makereport(ite…

服务端和客户端测试连通ip设置记录

若服务器和客户端在同一台电脑&#xff0c;即为本机测试&#xff0c;则测试都用127.0.0.1 若是服务器和客户端在两台电脑&#xff0c;则需要在同一局域网内&#xff0c;并且ip地址填写本机ip。 若是发布在云端测试&#xff0c;则服务端地址为0.0.0.0&#xff1b;客户端地址填…