本文介绍: 有很多小伙伴吵着要完整项目源码完整项目属于公司内部代码这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于公司内部业务

前言

有很多小伙伴吵着要完整项目源码完整项目属于公司内部代码这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于公司内部业务

所以用例代码还是自己一个个写,我只能分享项目框架,只能帮你们到这了。

一、项目结构
1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou

2.在工程的跟目录新建一个脚本run_main.py,用来执行全部用例

3.在工程创建以下几个pakage包:

case:这个包放test开头测试用例,也可以放一些封装接口方法,如:loginblog(如果封装接口比较多,也可以单独放一个包

common:这个包放一些公共的方法,如:读取excel文件方法,读取mysqloraclelogger.py这个封装日志输入

config:cfg.ini这里配置文件,如邮箱的一些参数:收件人,发件人,密码等,readConfig.py用于读取配置文件

logs:这里存放日志信息

report:这里存放测试报告

二、run_main
一步:用discover方法加载所有的测试用例

1.cur_path这个参数是读取当前这个脚本的真实路径,也就是run_main.py的真实路径

2.caseName=”case这个case是存放测试用例文件夹,如果没有的话,自动创建。如果想运行其它文件夹的用例,就改下caseName这个参数值

3.rule=”test*.py“这个是匹配用例脚本名称规则默认匹配test开头的所有用例

第二步生成HTML报告

1.把上一步加载用例的参数传入这个函数,测试报告文件名默认report文件夹:reportName=”report

2.如果没有这个report文件夹也没关系可以自动创建的

第三步:获取最新的测试报告

1.如果第二步生成的测试报告加了时间戳,想找到最新文件就用第三

2.如果第二步不加时间戳,只是生成result.html,那这一步其实没卵用,可以忽略

个人觉得报告一个名称result.html就行,新的自动覆盖旧的)

第四步:发送测试报告邮箱

1.像QQ邮箱这种ssl加密的就走SMTP_SSL,用授权登录

2.其它邮箱就正常账号密码登录,走SMTP

最后执行代码

1.这里邮箱内容读的配置文件

三、config配置

1.cfg.ini打开这里配置文件内容

 2.用readConfig.py读取配置文件

3.读取的内容就是传入第二步操作里面需要调用邮箱配置信息

四、logger

1.logger.py这个文件放到common目录下,封装日志文件的读取

2.日志保存logs文件夹

 3.封装代码

# coding:utf-8
import logging, time
import os
# log_path是存放日志路径
cur_path = os.path.dirname(os.path.realpath(__file__))
log_path = os.path.join(os.path.dirname(cur_path), 'logs')
# 如果不存在这个logs文件夹,就自动创建一个
if not os.path.exists(log_path):os.mkdir(log_path)
 
class Log():
    def __init__(self):
        # 文件的命名
        self.logname = os.path.join(log_path, '%s.log'%time.strftime('%Y_%m_%d'))
        self.logger = logging.getLogger()
        self.logger.setLevel(logging.DEBUG)
        # 日志输出格式
        self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')
 
    def __console(self, level, message):
        # 创建一个FileHandler,用于写到本地
        fh = logging.FileHandler(self.logname, 'a')  # 追加模式  这个是python2的
        # fh = logging.FileHandler(self.logname, 'a', encoding='utf-8')  # 这个是python3的
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(self.formatter)
        self.logger.addHandler(fh)
 
        # 创建一个StreamHandler,用于输出控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(self.formatter)
        self.logger.addHandler(ch)
 
        if level == 'info':
            self.logger.info(message)
        elif level == 'debug':
            self.logger.debug(message)
        elif level == 'warning':
            self.logger.warning(message)
        elif level == 'error':
            self.logger.error(message)
        # 这两行代码是为了避免日志输出重复问题
        self.logger.removeHandler(ch)
        self.logger.removeHandler(fh)
        # 关闭打开的文件
        fh.close()
 
    def debug(self, message):
        self.__console('debug', message)
 
    def info(self, message):
        self.__console('info', message)
 
    def warning(self, message):
        self.__console('warning', message)
 
    def error(self, message):
        self.__console('error', message)
 
if __name__ == "__main__":
   log = Log()
   log.info("---测试开始----")
   log.info("操作步骤1,2,3")
   log.warning("----测试结束----")
五、case用例

1.常用的接口,需要检查调用的单独封装处理,如登录

2.test开头用例

六、logs日志查看

1.运行完后日志都会收集到logs文件夹以日期命名

七、生成测试报告

1.这里调用的是HTMLTestRunner生成html的测试报告

八、发送报告到邮箱

1.运行run_main.py就会自动生成报告,然后发送到邮箱了

这里QQ邮箱的展示是有问题的,一般用企业邮箱的话,是可以正常展示的)

总结

感谢每一个认真阅读文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

 视频文档获取方式
这份文档视频资料,对于想从事【软件测试】的朋友来说应该最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。 

原文地址:https://blog.csdn.net/2301_77645573/article/details/134786853

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_39292.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注