- 通过变量的形式保存
cls对象只在class级别前后置中进行定义,而调用则还是通过self进行调用;
修改cls对象的值,在全局生效,需要通过类名.对象进行赋值操作才可以生效,而通过self.对象
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'])
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']
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")
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文件中,需要时读取即可
相关代码如下
'''
读取配置文件和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()
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'])
access_token = self.kd.get_text(res.text, 'access_token')
if access_token:
readFile('../data/gettoken.yaml').writeyaml(access_token)