公司网站建设费入什么科目,营销型网站和普通网站,乐清网站建设服务,基于jsp的社团组织网站建设文章目录 一、搭建接口测试框架二、初始化日志三、定义全局变量四、封装接口五、编写测试用例六、生成测试报告 一、搭建接口测试框架 目录结构如下。 二、初始化日志 在utils.py文件中编写如下如下代码#xff0c;初始化日志。 # 导入app.py全局变量文件
import app
import l… 文章目录 一、搭建接口测试框架二、初始化日志三、定义全局变量四、封装接口五、编写测试用例六、生成测试报告 一、搭建接口测试框架 目录结构如下。 二、初始化日志 在utils.py文件中编写如下如下代码初始化日志。 # 导入app.py全局变量文件
import app
import logging
from logging import handlers# 定义初始化日志的函数
def init_logging():# 创建日志器logger logging.getLogger()# 设置日志等级logger.setLevel(logging.INFO)# 创建控制台处理器sh logging.StreamHandler()# 创建文件处理器fh logging.handlers.TimedRotatingFileHandler(app.BASE_DIR/log/mimi.log,whenM,interval5,backupCount3,encodingutf-8)# 定义日志的格式(格式化器)fmt %(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)sformatter logging.Formatter(fmt)# 将格式化器添加到处理器sh.setFormatter(formatter)fh.setFormatter(formatter)# 将处理器添加到日志器当中logger.addHandler(sh)logger.addHandler(fh)在api下的init.py文件中编写如下代码进行实际的初始化日志。 # 导入utils.py中编写的初始化日志的函数和logging模块
# 然后调用初始化日志的函数
# 最后测试日志是不是能够打印# 导包
import utils
import logging# 初始化日志
utils.init_logging()# 使用logging模块打印日志
logging.info(Test初始化日志后能不能打印日志)三、定义全局变量 在app.py文件中编写如下代码定义全局变量。 # 1 测试项目接口的代码项目地址
import osBASE_DIR os.path.dirname(os.path.abspath(__file__))
print(BASE_DIR)
# 2 测试项目服务器的根URL
BASE_URL http://www.nidexiangmu.com:13140
# 3 Token令牌维持登录状态
TOKEN bd8f3599604107c0d7eebe1ffe15d84a
# 4 HEADERS请求一般都是固定的
HEADERS {Content-Type:application/json, token: TOKEN}
# 5 Code由微信小程序前端生成用于发送给服务器来获取token
CODE 023tA6DW1eYZoY0g0JzW1bY5DW1tA6DK四、封装接口 在api下创建ego_api.py项目根据API文档编写如下格式的代码封装所有待测试接口。 # 导入requests模块
import requests
import app
# 创建API接口类
class EgoApi:def __init__(self):# 定义轮播图的urlself.banner_url app.BASE_URL /api/v1/banner/1# 定义专题栏位的urlself.theme_url app.BASE_URL /api/v1/theme# 最近新品的URLself.recent_product_url app.BASE_URL /api/v1/product/recent# 获取商品分类urlself.category_url app.BASE_URL /api/v1/category/all# 获取商品分类下的某个商品self.by_category_url app.BASE_URL /api/v1/product/by_category# 获取商品详情self.product_detail_url app.BASE_URL /api/v1/product# 获取用户订单列表self.order_list_url app.BASE_URL /api/v1/order/by_user# 创建订单URLself.create_order_url app.BASE_URL /api/v1/order# 查看订单详情self.order_detail_url app.BASE_URL /api/v1/order# 获取Tokenself.get_token_url app.BASE_URL /api/v1/token/user# 验证token的urlself.verify_token_url app.BASE_URL /api/v1/token/verify# 获取地址信息的URLself.get_address_url app.BASE_URL /api/v1/address# 轮播图def get_banner(self):return requests.get(self.banner_url)# 专题栏位def theme(self, params):return requests.get(self.theme_url, params{ids:params})# 最近新品def recent_product(self):return requests.get(self.recent_product_url)# 获取商品分类def get_product_category(self):return requests.get(self.category_url)# 获取商品分类下的某个商品def by_category(self, params):return requests.get(self.by_category_url, params{id:params})# 获取商品信息def get_product_detail(self, product_id):return requests.get(self.product_detail_url / str(product_id))# 获取用户订单列表登录后的接口def get_order_list(self, page):return requests.get(self.order_list_url, params{page:page}, headersapp.HEADERS)# 创建订单def create_order(self, jsondata):return requests.post(self.create_order_url, jsonjsondata, headersapp.HEADERS)# 查看订单def get_order_detail(self, order_id):return requests.get(self.order_detail_url / str(order_id), headersapp.HEADERS)# 获取Tokendef get_token(self, code):return requests.post(self.get_token_url, json{code: code})# Token验证接口def verify_token(self, token):return requests.post(self.verify_token_url, json{token: token})# 获取地址信息def get_address(self):return requests.get(self.get_address_url, headersapp.HEADERS)五、编写测试用例 在script下创建test_ego.py文件根据接口测试用例文档编写测试代码以下代码为正向测试用例示例。 import unittest
import logging
import app
from api.ego_api import EgoApiclass TestEgo(unittest.TestCase):def setUp(self):# 手动设置tokenapp.HEADERS[token] classmethoddef setUpClass(cls):cls.ego_api EgoApi()def test01_get_banner_success(self):# 使用实例化的ego_api发送获取轮播图的接口请求response self.ego_api.get_banner()# 打印响应数据logging.info(正向用例获取轮播图的测试结果为{}.format(response.json()))# 断言结果self.assertEqual(200, response.status_code)self.assertEqual(首页轮播图, response.json().get(description))def test02_get_theme_success(self):response self.ego_api.theme(1,2,3)logging.info(正向用例获取专题栏位的测试结果为{}.format(response.json()))self.assertEqual(200, response.status_code)self.assertEqual(专题栏位一, response.json()[0].get(name))def test03_get_recent_product(self):response self.ego_api.recent_product()logging.info(测试获取最近新品接口{}.format(response.json()))self.assertEqual(200, response.status_code)self.assertEqual(芹菜 半斤, response.json([0].get(name)))def test04_get_product_category(self):response self.ego_api.get_product_category()logging.info(测试获取商品分类接口{}.format(response.json()))self.assertEqual(200, response.status_code)self.assertEqual(果味, response.json([0].get(name)))# 获取商品分类下的商品def test05_get_product(self):# 使用封装的接口获取商品分类下的商品response self.ego_api.by_category(2)# 打印结果logging.info(获取商品分类下的商品为{}.format(response.json()))# 断言self.assertEqual(200, response.status_code)self.assertEqual(梨花带雨 3个, response.json()[0].get(name))# 获取商品详情def test06_get_product_detail(self):# 使用封装的接口获取商品详情response self.ego_api.get_product_detail(2)# 打印结果logging.info(获取商品商品详情{}.format(response.json()))# 断言self.assertEqual(200, response.status_code)self.assertEqual(梨花带雨 3个, response.json().get(name))六、生成测试报告 在run_suite.py文件中编写如下代码可生成测试报告。 # 导包
import unittest
import app
from script.test_ego import TestEgo
from lib.HTMLTestRunner import HTMLTestRunner
# 创建测试套件
suite unittest.TestSuite()
# 将测试用例的代码添加到测试套件中
suite.addTest(unittest.makeSuite(TestEgo))
# 定义测试报告的路径和名称
report_name app.BASE_DIR /report/mini.html
# 使用HTMLTestRunner运行测试套件生成测试报告
with open(report_name, wb) as f:# 初始化HTMLTestRunnerrunner HTMLTestRunner(f, verbosity1, titleEgo微商, description测试Ego微商的常见接口)# 使用实例化的runner运行测试套件并生成测试报告runner.run(suite)七、运行结果 1、日志结果如下 2、测试报告结果如下生成的测试报告位于report文件夹下