专栏首页橙子探索测试Python自动化测试疑问及解决方案(一)

Python自动化测试疑问及解决方案(一)

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

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

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

根据实际情况进行sql初始化数据或调前置接口

1、sql初始化数据

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

2、调前置接口

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

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

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

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

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

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

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

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

目前是把功能用到的字段,多条数据同类型的分别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_sql
 
    def 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:
            pass
 
    def 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_values
        assert eval(expect)['code'] == response_data['code']
        assert eval(expect)['msg'] == response_data['msg']

本文分享自微信公众号 - 橙子探索测试(chengzitest),作者:王荔探索测试

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    橙子探索测试
  • Pytest+Allure+Jenkins接口自动化项目实战(一)

    经过一周多时间,基于python+pytest+excel+allure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行...

    橙子探索测试
  • Jmeter BeanShell采样器提取接口响应写入csv文件(四)

    橙子探索测试
  • Mybatis面试题

    Mybatis常见面试题 #{}和${}的区别是什么? {}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据 ${}对传递...

    Java3y
  • 优化程序之case when语句配合存储过程

    这段代码是完全ok的。是没什么问题。但是我们来进行一下优化,但是我们并不是从代码进行优化。我们从sql语句开始。

    小明爱学习
  • Java批处理

    批处理 JDBC对批处理的操作,首先简单说一下JDBC操作sql语句的简单机制。 JDBC执行数据库操作语句,首先需要将sql语句打包成为网络字...

    汤高
  • mysql 恢复单表数据

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://b...

    shaonbean
  • Oracle SQL调优之绑定变量用法简介

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    SmileNicky
  • 网页中默认图片的几种解决方式

    现在网页中图片随处可见,但避免不了有时会出现图片资源失败的情况,在谷歌浏览器中就会显示这样

    桃翁
  • Docker源码解读

    开启Docker学习之路,需要脚踏实地,从源码开始;网上也有一些关于Docker源码的学习的资料,但是分析的源码都是比较老的版本,所以这里就班门弄斧一下,将自己...

    Librant

扫码关注云+社区

领取腾讯云代金券