Python自动化测试问题及处理方法(一)

一、接口自动化测试中,会用到测试账号,如何合理运用账号?

账号一般用于接口登录、接口用例传参、操作sql等,目前账号是写到yaml配置文件里,如果1个账户使用会出现资源冲突,可以配置多个账号使用,登录脚本中、用例脚本中、sql脚本中,先将读取过来的账号设为全局变量,然后用到的地方进行替换就。保证了账号的更换至需要动配置文件就可以了

二、接口自动化测试中,接口依赖前置数据较多,如何处理?

根据实际情况进行sql初始化数据或调前置接口
1、sql初始化数据
可能某个接口传参数据依赖很多前置接口响应或很多前置条件,首先需要对业务非常熟悉,且相关数据表很熟悉,然后构造合理的sql操作,setup时进行数据初始化前置插入,teardown时清理掉产生的数据,还原环境,保证不对环境进行数据污染,下次可继续复用

2、调前置接口
如果我当前接口依赖5个接口,调这5个接口,其中1个失败,继续重复执行多次,还是失败就失败掉当前接口

三、接口自动化测试中,接口是如何断言?

1、固定单值,用例中写四和响应结果断言

2、固定多值,用例中写四和响应结果断言

3、变动单值,查库与响应结果断言

4、变动多值,列表展示数据,断言前端用到展示出来的字段

2、变动多值,动态的多条列表数据断言

例如:二手房源列表,有单价、总价、面积、朝向、多少人关注等字段

我是把功能用到的字段,多条数据同类型的分别append到一个列表里与数据库查出来多条数据同类型的append到列表里进行断言对比,这样有多少个字段就要断言对比多少次

 

四、断言是如何封装的?

可以根据不同类型进行归类断言:

1、code msg类  {"code":0,"msg":"成功"} 、{"code":2603,"msg":"手机号错误"} 

2、data列表数据类

json_data={
    'count_tab_4': 13,
    'total': 13,
    'list': [{
        'created_at': '2019-12-19 16:10:01',
        'updated_at': '2019-12-19 16:15:01',
        'company': {
            'full_name': '项目',
            'short_name': '项目简'
        },
        'task_sex': 1,
        'task_user_id_card': '610523198806273676',
        'task': {
            'type_child_name': '软件开发',
            'users_type_txt': '用户'
        }
    }, {
        'created_at': '2019-12-17 11:25:02',
        'updated_at': '2019-12-17 11:30:02',
        'company': {
            'full_name': '项目',
            'short_name': '项目简'},
        'task_sex': 1,
        'task_name': '啊啊啊任务啊啊',
        'task': {
            'type_child_name': '软件开发',
            'users_type_txt': '用户'}
    }],
    'page_size': 10,
    'page': 1
}

class Assertion(object):sql_values_list = []response_values = []def __init__(self):self.test=ExecSql().exec_sqldef get_sql_data(self,project,sql_type,sql):'''查询sql数据组合成list:param project::param sql_type::param sql::return:'''sql_values=self.test(project,sql_type,sql)for i in sql_values:for j in i:self.sql_values_list.append(j)def get_response_data(self,response_data, keys=[]):'''获取接口响应数据组合成list:param response_data::param keys::return:'''if isinstance(response_data, list):for value in response_data:if isinstance(value, list) or isinstance(value, dict):self.get_response_data(value, keys)elif isinstance(response_data, dict):for i, j in sorted(response_data.items()):if i in keys:self.response_values.append(j)else:self.get_response_data(j, keys)else:passdef asser(self,expect,response_data,assert_type=None):'''断言:param assert_type::param expect::param response_data::return:'''print(self.sql_values_list,self.response_values)if assert_type=='type1':assert self.sql_values_list==self.response_valuesassert eval(expect)['code'] == response_data['code']assert eval(expect)['msg'] == response_data['msg']

 

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

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

相关文章

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

在做接口自动化测试时,遇到下面这个疑惑,然后再群里请教了大家,讨论如下,可以参考下: 讨论1: 上海—橙子探索测试 10:12:34 自动化测试中,提现接口一般会依赖前置功能实名认证、绑卡、设置交易…

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…