自动化测试中的接口关联的2种方法

  • 通过变量的形式保存
    cls对象只在class级别前后置中进行定义,而调用则还是通过self进行调用;
    修改cls对象的值,在全局生效,需要通过类名.对象进行赋值操作才可以生效,而通过self.对象
#-*-coding:utf8 -*-

import unittest
from ddt import ddt,file_data
from api_keyword.Keyword_base import Keyword
from config.readFile import readFile
'''
    创建一个UnitTest测试用例管理框架
'''
@ddt
class ApiCase(unittest.TestCase):
    #公共部分提取,作为初始化内容
    @classmethod
    def setUpClass(cls) -> None:
        cls.access_token = None
        # 实例化需要的内容
        cls.kd = Keyword()
        cls.url_config = readFile('../config/Config.ini').get_readConfig("url")
    # 测试用例
    @file_data('../data/login.yaml')
    def test_1_api_login(self,**kwargs):
        #实例化需要的内容
        url = self.url_config + kwargs['path']
        #接口测试
        res=self.kd.post(url=url,data=kwargs['data'],header=kwargs['headers'])
        #获取登录的token并给access_token赋值
        ApiCase.access_token=self.kd.get_text(res.text,'access_token')
        #获取需要断言的值
        value_success=self.kd.get_text(res.text,'nickname')
        value_faile=self.kd.get_text(res.text,'resultMsg')
        #断言校验
        if "nickname" in res.json()['data'] :
            self.assertEqual(first=kwargs['text'],second=value_success,msg='登录成功')
        else:
            self.assertEqual(first=kwargs['text'],second=value_faile,msg='登录失败')
    @file_data('../data/logout.yaml')
    def test_2_api_logout(self,**kwargs):
        url=self.url_config+kwargs['path']
        #把access_token的值赋值给headers
        headers=kwargs['headers']
        headers['access_token']=self.access_token
        #接口测试
        res=self.kd.post(url=url,data=kwargs['data'],header=kwargs['headers'])
        value=self.kd.get_text(res.text,'success')
        faile_value=self.kd.get_text(res.text,"error")
        #断言校验,如果success返回true,则退出成功
        if self.kd.get_text(res.text,"success"):
            self.assertEqual(first=kwargs['text'],second=value,msg='退出成功')
        else:
            self.assertEqual(first=kwargs['text'],second=faile_value,msg="accid未传")
  • 通过文件来保存关联信息,需要使用时读取该文件信息
    把需要的关联信息保存在单独的yaml文件中,需要时读取即可
    相关代码如下
#-*-coding:utf8 -*-
'''
读取配置文件和yaml文件
'''
import configparser
import os
import yaml


class readFile:
    def __init__(self,filename=None):
        if filename:
            self.confile=filename
        else:
            curr_path=os.path.dirname(os.path.abspath('.'))
            self.confile=os.path.join(curr_path,'config/Config.ini')

    def get_readConfig(self,title,param):
        self.cf=configparser.ConfigParser()
        self.cf.read(self.confile,encoding='utf-8')
        value=self.cf.get(title,param)
        return value
    def readyaml(self):
        try:
            with open(self.confile,mode='r',encoding='utf-8') as f:
                data=yaml.load(f,Loader=yaml.FullLoader)
        except IOError as e:
            print("打开文件错误:",e)
        finally:
            f.close()
            return data
    def writeyaml(self,datas):
        try:
            with open(self.confile,mode='w',encoding='utf-8') as f:
                data=yaml.dump(datas,f,allow_unicode=True)
        except IOError as e:
            print('读写文件错误',e)
        finally:
            f.close()
#-*-coding:utf-8-*-
import unittest

from ddt import file_data,ddt

from api_keyword.Keyword_base import Keyword
from config.readFile import readFile

@ddt
class Correlation_parameters(unittest.TestCase):
    kd = Keyword()
    url_config = readFile('../config/Config.ini').get_readConfig("test_Environment", "url")
    @file_data('../data/login.yaml')
    def test_get_token(self, **kwargs):
        # 实例化需要的内容
        url = self.url_config + kwargs['path']
        # 接口测试
        res = self.kd.post(url=url, data=kwargs['data'], header=kwargs['headers'])
        # 获取登录的token并给access_token赋值
        access_token = self.kd.get_text(res.text, 'access_token')
        #把token值写入到文件中
        if access_token:
            readFile('../data/gettoken.yaml').writeyaml(access_token)

你可能感兴趣的:(接口测试)