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

账号一般用于接口登录、接口用例传参、操作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']

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

  1. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

  2. python自动化测试框架pytest.pdf_Python自动化测试框架

    随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架.只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了开发时间.而且由于这些框架被广泛使用,他们具有很好的 ...

  3. python自动化测试视频百度云-Python接口自动化测试 PDF 超清版

    给大家带来的一篇关于Python自动化相关的电子书资源,介绍了关于Python.接口自动化.测试方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小61.2 MB,王浩然编写,目前豆瓣.亚马 ...

  4. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?

    一.Python常用领域Python用于简单脚本编程,如编写2048小游戏或12306的自动抢票软件: Python用于系统编程,如开发系统应用: Python用于开发网络爬虫: 有资料奉上,可以看看 ...

  5. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  6. python自动化测试数据驱动_Python 自动化测试(四):数据驱动

    Python 自动化测试(四):数据驱动 本周测试公开课<Pytest 自动化测试最佳实践:实用特性与进阶技巧>! 在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤 ...

  7. python自动化测试数据驱动_利用Python如何实现数据驱动的接口自动化测试

    大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,mobi ...

  8. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  9. selenium2 python自动化测试实战(回归测试)

    selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...

最新文章

  1. 一文盘点MWC 2019所有5G设备和研发进展
  2. mega_[MEGA DEAL]终极Android N开发套件(90%折扣)
  3. 前端学习之html——基本结构
  4. java 自助更改密码 api_搭建ldap自助修改密码系统--Self Service Password
  5. 在Spring MVC中使用注解的方式校验RequestParams
  6. netbeans快捷键
  7. php 文件保存函数,PHP文件函数
  8. [html] 你对标签语义化的理解是什么?
  9. charts引入icon图片_v-charts 踩坑之路
  10. c语言程序综合实习学生成绩,C语言程序设计综合实习报告
  11. EfficientDet:COCO 51.0 mAP!谷歌大脑提出目标检测新标杆
  12. 关于ApplicationContextAware使用深入理解
  13. 二分答案——yyy2015c01 的 U 盘(洛谷 P2370)
  14. RESTful Web Services in Spring 3(上)转载
  15. [转载]MySQL各类SQL语句的加锁机制
  16. 云鲸扫拖一体机器人说明书_云鲸小白鲸扫拖一体机器人好用吗?真实的测评带你走进智能化家居时代...
  17. 用英伟达 DIGITS 进行图像分割
  18. php 7.1安装sockets,Centos7 下 PHP 添加缺少的组件 sockets 和 openssl
  19. SpringBoot 文件上传 基于MD5 文件内容校验工具类
  20. 手把手教你用Vscode Debugger调试代码

热门文章

  1. android 手机内存uri_android 的各种目录详解
  2. access mysql oracle数据库_Oracle Access 数据库连接 使用
  3. android代码移除焦点,android-如何从单个editText移除焦点
  4. Mybatis Plus————代码生成器
  5. Mybatis源码分析第一天------Mybatis实用篇
  6. 两个单链表相交的一系列问题----0_0
  7. app名字变为android+api,一起来做个app吧 wanandroid开放API
  8. 非一体式台式计算机,一体台式机推荐及介绍【详解】
  9. 计算机桌面程序名,深度技术win7旗舰版电脑桌面图标只显示名称了怎么办
  10. JavaScript变量声明+数据类型+数字格式+操作符+进制