美文网首页软件测试Python接口测试自动化测试
python项目实战--封装获取testFile下数据方法(五)

python项目实战--封装获取testFile下数据方法(五)

作者: orange_ade | 来源:发表于2019-11-12 13:38 被阅读0次
一、文件创建

接上篇内容,在之前新增的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文件,后面陆续补充数据库连接、邮件发送、查询数据库进行断言

相关文章

网友评论

    本文标题:python项目实战--封装获取testFile下数据方法(五)

    本文链接:https://www.haomeiwen.com/subject/qoufictx.html