一、文件创建
接上篇内容,在之前新增的common文件下新增:get_case.py,用来封装URL、用例参数的获取。
这里接口中的URL及data、response等数据存储在testFile目录的ini文件下,目录结构在上篇文章中已贴图片
- get_case.py 代码:
#! /usr/bin/python
# coding:utf-8
from config.globalparameter import data_path
from config.globalparameter import url_path
def get_params(ini_name, case_name, data):
data_ini = data_path(ini_name + '.ini')
params = eval(data_ini.get(case_name, data))
return params
def get_url(ini_name, case_name, base_url):
base_url = eval(url_path.get('URL', base_url))
url = get_params(ini_name, case_name, 'url')
test_url = base_url + url
return test_url
if __name__ == '__main__':
print(get_params('login', 'login', 'data'))
print(get_url('login', 'login', 'base_url'))
- globalparameter.py 文件中config_path方法下新增方法data_path,用于获取testFile文件夹下的ini文件
def data_path(ini_path):
# testFile目录下测试数据ini文件获取
path = configparser.ConfigParser()
real_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
case_path = real_path+"\\testFile"
join_path = os.path.join(case_path, ini_path)
path.read(join_path, encoding='utf-8')
return path
二、代码解释
globalparameter.py 文件中 def data_path(ini_path)方法详解:
- os.path.dirname(file)获取当前globalparameter.py 文件的相对路径D:\Program Files (x86)\Python\Pythonstudy\study_test\config
- os.path.join(os.path.dirname(file), os.pardir)获取*\study_test\config文件的上一级目录·····\study_test
- os.path.abspath(os.path.join(os.path.dirname(file), os.pardir))再获取目录·····\study_test的绝对路径,即D:\Program Files (x86)\Python\Pythonstudy\study_test
- 最后将获取到的real_path与testFile进行拼接得到case_path:D:\Program Files (x86)\Python\Pythonstudy\study_test\testFile
- join_path 可以将得到的case_path 与 testFile目录下文件进行组合从而找到指定的ini文件,后面写方法去拿ini文件中的数据。
get_case.py 文件代码详解
- 先从config文件夹下的globalparameter.py中引入方法:data_path、url_path(通过config_path方法读取到文件config.ini)
- 方法get_params:定义三个变量,data_ini获取testFile目录下的ini文件,params读取testFile目录下的ini文件中的数据
- 方法get_url:定义三个变量,base_url通过url_path获取到config.ini(该文件中存放的内容已在上篇中给出)文件中的base_url,url通过上面get_params方法获取testFile目录下ini文件中对应url值,最后test_url将config.ini文件中的base_url与testFile目录下ini文件中的url拼接,并返回最终完整接口URL。
三、调用get_case.py文件中的get_params、get_url方法
testFile文件夹下新增文件login.ini,写入如下数据:
[login]
url = '/ei/ai/name/login'
data = {
"username": "vivid.liu",
"password": "123456"
}
response = {"token": "**"}
- 在testCase目录下新增用例test_login.py,想调用上面方法获取到接口的url、data,则可以按如下写:
# coding:utf-8
import unittest
import os, sys
from common.get_case import *
from common.login_info import login_info
from common.configHttp import RequestMethod
class LoginTest (unittest.TestCase):
def setUp(self):
self.url = get_url('login', 'login', 'login_url')
self.headers = {'Content-Type': 'application/json;charset=utf-8', '接口请求头中token值对应字段': login_info("token")}
self.param = get_params('login', 'login', 'data')
self.response = get_params('login', 'login', 'response')
def tearDown(self):
print("完成登录测试")
# 测试用例点
def test_login_success(self):
self.req_result = RequestMethod().post(self.url, self.param, self.headers).json()
print(self.req_result)
self.assertEqual(self.response['token'], self.req_result['token'])
print("================登录(用户名+密码正确)==================")
if __name__ == '__main__':
unittest.main()
- 从对应文件引入登录、请求、获取ini文件中数据的方法,传入get_params、get_url方法中需要的三个参数:ini文件名、ini文件中对应[]中数据、[]下对应字段(针对get_params方法)/config.ini中登录接口域名字段(针对get_url方法)
四、总结
基本主要文件已讲解完成,下一篇将讲解run_All.py文件,后面陆续补充数据库连接、邮件发送、查询数据库进行断言
网友评论