测开

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

2021-05-12  本文已影响0人  IT赶路人

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

一:使用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 所对应的具体数据,并返回

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

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

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

总结

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

关注公众号:IT赶路人,免费获取更多与IT有关的信息!

上一篇 下一篇

猜你喜欢

热点阅读