从零搭建接口测试框架(四)——Common文件夹

四. Common文件夹

Common 文件夹下存放着一些自定义的通用模块,将一些可以复用的代码进行了简单封装,为框架提供工具支持,如下所示:

Common/
├── getPath.py
├── log.py
└── sendEmail.py

1. getPath.py

getPath.py 的功能是为框架获取一些关键性路径,如配置文件 config.ini 的存放路径,最终测试报告的存放目录等。内容如下:

  1 import os
  2 
  3 class GetPath():
  4     def __init__(self):
  5         # 获取当前文件所在目录
  6         self.current_dir =  os.path.split(os.path.realpath(__file__))[0]
  7         # 获取App文件夹路径
  8         self.app_dir = os.path.abspath(os.path.dirname(self.current_dir))
  9         # 获取项目的根目录路径
 10         self.project_dir = os.path.abspath(os.path.dirname(self.app_dir))
 11 
 12     def get_conf_path(self):
 13         """
 14         返回config.ini文件路径
 15         """
 16         path = os.path.join(self.project_dir, 'config.ini')
 17         return path
 18 
 19     def get_log_path(self):
 20         """
 21         返回logs.txt文件路径
 22         """
 23         path = os.path.join(self.project_dir, 'logs.txt')
 24         return path
 25 
 26 
 27     def get_case_dir(self):
 28         """
 29         返回测试用例文件存放目录
 30         """
 31         dir = os.path.join(self.project_dir, 'TestCase')
 32         return dir
 33 
 34     def get_report_dir(self):
 35         """
 36         返回测试报告存放目录
 37         """
 38         dir = os.path.join(self.project_dir, 'Report')
 39         return dir
 40 
 41 
 42 if __name__ == '__main__':
 43     print(GetPath().get_conf_path())
 44     print(GetPath().get_case_dir())
 45     print(GetPath().get_report_dir())
 46     print(GetPath().get_log_path())

运行一下,命令行输入:python getPath.py,结果如下:

>>> python getPath.py 
/home/user1/ProgramFile/IntTestDemo/config.ini
/home/user1/ProgramFile/IntTestDemo/TestCase
/home/user1/ProgramFile/IntTestDemo/Report
/home/user1/ProgramFile/IntTestDemo/logs.txt

2. log.py

logging 是python的一个内置模块,该模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。
log.py 用于配置日志的输出格式以及日志文件的写入,往后的使用中直接引入就可以了,例如:

import os
# 从Common包引入Log
from Common.log import Log

log = Log(__name__).getlog()
# 判断用例文件是否存在
if not os.path.isfile(case_file_path):
    log.error("测试用例文件不存在!")

log.py 文件内容如下:

  1 import os
  2 import logging
  3 from .getPath import GetPath
  4 
  5 
  6 class Log(object):
  7     def __init__(self, logger=None):
  8         """
  9         设置log并指定日志文件
 10         """
 11         # 创建一个logger
 12         self.logger = logging.getLogger(logger)
 13         self.logger.setLevel(logging.INFO)
 14         # 指定日志路径
 15         self.log_path = GetPath().get_log_path()
 16         # 创建一个handler,用于写入日志
 17         fh = logging.FileHandler(self.log_path, mode='a')
 18         fh.setLevel(logging.DEBUG)      # 输出到日志的log等级为DEBUG
 19         # 创建一个handler,用于输出到控制台
 20         ch = logging.StreamHandler()
 21         ch.setLevel(logging.WARNING)
 22         # 定义两个handler的输出格式
 23         formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:              %(message)s")
 24         fh.setFormatter(formatter)
 25         ch.setFormatter(formatter)
 26         # 给logger添加hanler
 27         self.logger.addHandler(fh)
 28         self.logger.addHandler(ch)
 29 
 30     def getlog(self):
 31         return self.logger
 32 
 33 if __name__ == '__main__':
 34     log = Log(__name__).getlog()
 35     log.error("测试用例文件不存在!")

回到上层目录 IntTestDemo/App 下试运行:

>>> python -m Common.log
2019-05-16 18:42:52,661 - log.py[line:35] - ERROR: 测试用例文件不存在!

程序会自动生成了日志文件 logs.txt,打开后可以看到已经写入了一条日志。

3. sendEmail.py

该模块的作用是在测试完成后将测试报告发送给特定的用户,我们留到后面再做叙述,暂时不必理会。

4. 别忘记推送代码

>>> cd ../    # 回到根目录IntTestDemo
>>> git add .    # 将项目改动放入暂存区
>>> git commit -m     # 将暂存区的的修改提交到当前分支,m参数表示添加注释
>>> git push origin master    # 推送到远程服务器(github)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容