前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自动化测试疑问及解决方案(一)

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

作者头像
王大力测试进阶之路
发布2020-01-17 17:55:15
8390
发布2020-01-17 17:55:15
举报
文章被收录于专栏:橙子探索测试

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

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

}

代码语言:javascript
复制
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']
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档