python+requests接口自动化完整项目设计源码

前言

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

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

一、项目结构

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

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

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

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

--common:这个包放一些公共的方法,如:读取excel文件方法,读取mysql、oracle,logger.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.封装代码

 
  1. # coding:utf-8

  2. import logging, time

  3. import os

  4. # log_path是存放日志的路径

  5. cur_path = os.path.dirname(os.path.realpath(__file__))

  6. log_path = os.path.join(os.path.dirname(cur_path), 'logs')

  7. # 如果不存在这个logs文件夹,就自动创建一个

  8. if not os.path.exists(log_path):os.mkdir(log_path)

  9. class Log():

  10.     def __init__(self):

  11.         # 文件的命名

  12.         self.logname = os.path.join(log_path, '%s.log'%time.strftime('%Y_%m_%d'))

  13.         self.logger = logging.getLogger()

  14.         self.logger.setLevel(logging.DEBUG)

  15.         # 日志输出格式

  16.         self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')

  17.     def __console(self, level, message):

  18.         # 创建一个FileHandler,用于写到本地

  19.         fh = logging.FileHandler(self.logname, 'a')  # 追加模式  这个是python2的

  20.         # fh = logging.FileHandler(self.logname, 'a', encoding='utf-8')  # 这个是python3的

  21.         fh.setLevel(logging.DEBUG)

  22.         fh.setFormatter(self.formatter)

  23.         self.logger.addHandler(fh)

  24.         # 创建一个StreamHandler,用于输出到控制台

  25.         ch = logging.StreamHandler()

  26.         ch.setLevel(logging.DEBUG)

  27.         ch.setFormatter(self.formatter)

  28.         self.logger.addHandler(ch)

  29.         if level == 'info':

  30.             self.logger.info(message)

  31.         elif level == 'debug':

  32.             self.logger.debug(message)

  33.         elif level == 'warning':

  34.             self.logger.warning(message)

  35.         elif level == 'error':

  36.             self.logger.error(message)

  37.         # 这两行代码是为了避免日志输出重复问题

  38.         self.logger.removeHandler(ch)

  39.         self.logger.removeHandler(fh)

  40.         # 关闭打开的文件

  41.         fh.close()

  42.     def debug(self, message):

  43.         self.__console('debug', message)

  44.     def info(self, message):

  45.         self.__console('info', message)

  46.     def warning(self, message):

  47.         self.__console('warning', message)

  48.     def error(self, message):

  49.         self.__console('error', message)

  50. if __name__ == "__main__":

  51.    log = Log()

  52.    log.info("---测试开始----")

  53.    log.info("操作步骤1,2,3")

  54.    log.warning("----测试结束----")

五、case放用例

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

2.test开头的用例

六、logs日志查看

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

七、生成测试报告

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

八、发送报告到邮箱

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

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

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值