解决接口自动化数据依赖问题

Posted 测试baby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决接口自动化数据依赖问题相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
编写接口自动化测试用例的童鞋都清楚,解决接口自动化数据依赖问题是接口自动化测试用例中很重要的一部分,所以今天我给大家分享常见的三种解决接口自动化测试的数据依赖问题的方法

一:使用setUp解决数据依赖问题

setUp是用例运行的前置条件,每次在运行用例的时候,都会优先运行setUp函数,我们可以运用setUp的这一特性,来解决数据依赖问题。

将登录的请求放到了setUp函数里面,每次运行前都会发起登录请求。然后再将需要用到的cookie当做参数传递到了下一个请求中。从而解决了数据依赖问题。

class TestJenkins(unittest.TestCase):

    def setUp(self):

        ‘‘‘登录请求‘‘‘

        self.url = ‘https://www.ketangpai.com/UserApi/login‘

        self.data = {

            "email": "1489088761@qq.com",

            "password": "A1789788",

            "remember": 0

        }

        self.headers = {

            "User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/78.0.3904.108 Safari/537.36",

            "Content-Type": "application/x-www-form-urlencoded",

        }

        self.login_res = HttpRequest().http_request(‘post‘, self.url, self.data, self.headers, verify=False)

二、使用反射解决数据依赖问题

首先我们先来看什么是python中的反射?

反射它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法:

getattr 获取指定字符串名称的对象属性

setattr 为对象设置一个对象

hasattr 判断对象是否有对应的对象(字符串)

delattr 删除指定属性

还是以登陆接口为例

import unittest

from API_AUTO.tools.http_request import HttpRequest

import re

from API_AUTO.tools.get_data import GetData

class TestHttp(unittest.TestCase):

    def setUp(self):

        pass

    def test_Normal_login(self):

        '''正常登录'''

        url = 'https://www.ketangpai.com/UserApi/login'

        data = {

            "email": "1489088761@qq.com",

            "password": "A137898",

            "remember": 0

        }

        headers = {

            "User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",

            "Content-Type": "application/x-www-form-urlencoded",

        }

        login_res = HttpRequest().http_request('post', url, data, headers,verify=False)

        if login_res.cookies:

            '''如果有cookie就进行替换,if后面的条件语句值不为空,即条件成立'''

            setattr(GetData, 'cookie', login_res.cookies)  # 反射

        try:

            self.assertEqual(1, login_res.json()['status'], '登录失败')

        except AssertionError as e:

            print('登录错误{}'.format(e))

            raise e

三、使用excel自动化测试用例模板解决数据依赖问题

在这里插入图片描述

如上图所示,一共有:rely_case_id、rely_data、request_rely_file及request_data 这四列。

rely_case_id:表示当前case所依赖的数据所在的case id

rely_data:表示当前case所依赖的case的数据所对应的响应结果的字段(可能一些同学不明白,为什么这里不是直接写依赖的数据,因为接口所依赖的数据往往都是动态。至少我做自动化测试的这几年,没见过一次是静态数据依赖,如果是静态的,就不会让这么多的同学烦恼怎样解决)

request_rely_file:请求数据中要替换的数据所对应的字段值

request_data:请求数据key(需要说一下,该列保存的都是key。所有的请求数据都保存在json文件中。通过key来获取对应的具体的请求参数数据值)

解决思路

通过rely_case_id的值,来执行所依赖的case,并获取相应的响应结果

将获取的响应结果转为json/dict

通过jsonpath_rw 来截取rely_data 所对应的具体数据,并返回

当获取到所依赖的数据后,此时获取具体的请求数据

再将请求数据要替换的数据,替换为所依赖的数据即可

此时正常执行该用例即可。

总结

今天给大家分享常见的三种解决接口自动化测试的数据依赖问题的方法,希望对正在编写接口自动化的你有所帮助!

在这里插入图片描述

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号:【伤心的辣条】免费获取~

我的学习交流群:902061117 群里有技术大牛一起交流分享~

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

好文推荐:

35岁之后软件测试工程师靠什么养家?我能继续做测试!

App公共测试用例梳理

Python简单?先来40道基础面试题测试下

阿里二黑叹息:越来越多的年轻人从职场撤退了?

从一名开发人员转做测试的一些感悟

以上是关于解决接口自动化数据依赖问题的主要内容,如果未能解决你的问题,请参考以下文章

python自动化测试怎么将多个依赖数据

接口自动化(八):如何处理接口依赖

接口自动化使用反射解决数据依赖问题

Android 片段和依赖注入

Android片段和依赖注入

接口自动化--数据依赖的处理