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.封装代码

# 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邮箱的展示是有问题的,一般用企业邮箱的话,是可以正常展示的)

 

(源代码可以通过以下链接购买,7.2章节可以获取下载地址)

---------------------------------python接口自动化已出书-------------------------

全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695

时间: 2024-10-13 19:06:09

python+requests接口自动化完整项目设计源码的相关文章

编码-python抓取网页,网页源码无法解码

问题描述 python抓取网页,网页源码无法解码 抓取的网页:http://esf.nanjing.fang.com/ 浏览器查看源码显示content="text/html; charset=gb2312" python chardet 结果显示{'confidence': 0.0, 'encoding': None} 通过page=page.decode('gb2312','ignore').encode('utf-8'),解码后print为乱码 求问应该如何对这个网页的源代码进行

求助,python 解析爬取的网页源码中的json部分

问题描述 求助,python 解析爬取的网页源码中的json部分 爬下来的网页源码有一部分是这样的 : 中间那一部分是json吧?要怎么才能解析成像浏览器那样的好继续抓取所要的信息? 说部分是因为有另外一些是正常的html,就中间这一部分想要的信息就这样两行超级长的延伸...也使用过json.load()来解析,不想显示错误"没有可以解析的json对象". 这两行中还有一部分"}u0026nicku003d${nick}u0026rnu003d${rn}u0026stats.

急需解答-大神们给个案例吧,急用,最好有完整的源码

问题描述 大神们给个案例吧,急用,最好有完整的源码 谁能给个java单线程文件断点上传下载的案例啊,比如下载word文档时中断,一会儿要接着下载,不是由于文件过大才用断点续传的 解决方案 断点上传需要服务器自己处理,没有标准的方法,断点下载是http协议本身有规定的,http协议规定,你可以请求一个文件的一部分,这是为什么可以断点下载的原理.http://blog.csdn.net/maoxiang/article/details/5446293 单线程.多线程其实是一样 httpConnect

jQuery实现的表头固定效果实例【附完整demo源码下载】_jquery

本文实例讲述了jQuery实现的表头固定效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体实现步骤如下: 一.新建一js文件jQuery_FixedTableHead.js 内容如下: jQuery.fn.CloneTableHeader = function(tableId, tableParentDivId) { var obj = document.getElementById("tableHeaderDiv" + tableId); if (obj) { jQue

jQuery抛物线运动实现方法(附完整demo源码下载)_jquery

本文实例讲述了jQuery抛物线运动实现方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 点击此处查看在线演示效果. 完整实例代码点击此处本站下载. 具体代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>抛物线运动效果</title> <style type="text/css"> .boll

Android程序自动更新功能模块的实现方法【附完整demo源码下载】_Android

本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更新模块检测服务器上存放的版本号跟当前程序的版本号如果大于当前版本号,弹出更新对话框,如果用户选择更新,则显示当前更新状态,然后替换当前程序. 程序调用版本更新检测: private UpdateManager updateMan; private ProgressDialog updateProgr

深度剖析使用python抓取网页正文的源码_python

本方法是基于文本密度的方法,最初的想法来源于哈工大的<基于行块分布函数的通用网页正文抽取算法>,本文基于此进行一些小修改. 约定:       本文基于网页的不同行来进行统计,因此,假设网页内容是没有经过压缩的,就是网页有正常的换行的.        有些新闻网页,可能新闻的文本内容比较短,但其中嵌入一个视频文件,因此,我会给予视频较高的权重:这同样适用于图片,这里有一个不足,应该是要根据图片显示的大小来决定权重的,但本文的方法未能实现这一点.        由于广告,导航这些非正文内容通常以

asp.net大文件分块上传与进度显示,完整项目源码

很久就想自己做一个文件上传的组件了.只是一直忙也确实没有那个动力. 就是采用隐含的HttpWorkerRequest实现的. 具体的实现原理与过程我就不细说了.毕竟这方面资料很多而且我的代码都贴上了. 可以通过显式实现指定的接口而后在配置文件中进行配置即可实现自定义的文件处理操作. 由于小弟水平有限不足之处请大家指教. 测试的最大数据量是两个文件共1.4G .速度大约在6M-7M/s. 在HttpModule项目中有个Readme.txt文件对如何使用进行了介绍.  资料部分是我学习时在网上找的

python使用正则表达式检测密码强度源码分享_python

复制代码 代码如下: #encoding=utf-8#-------------------------------------------------------------------------------# Name:        模块1# Purpose:## Author:      Administrator## Created:     10-06-2014# Copyright:   (c) Administrator 2014# Licence:     <your lic