python调试:使用装饰器来统计函数被调用次数及格式化dict
喜欢调试的时候显示数据并显示一些其它的信息,比如区分是哪次调用的调试信息,比如友好的显示dict等相对复杂的数据类型,所以这里涉及到两个方面。一是统计函数被调用次数;二是格式化展示dict数据。 在类中对一个函数的调用次数进行统计比较方便,直接定义一个类属性来计数即可,但对于一个普通函数这样的方法就不能实现了,于是我们可以通过装饰器来实现。 装饰器(Decorators)是Python的一个重要功能,它是一个可以修改其他函数的功能的函...[>>…]
git:LF will be replaced by CRLF和pytest: --cov NTERNALERROR PermissionError
1.gitwarning:LFwillbereplacedbyCRLFin***file 偶然gitadd在进行代码提交的时候碰到警告warning:LFwillbereplacedbyCRLFin***file,原因是编辑的代码内容中存在符号转义问题,windows中的换行符为CRLF,而在linux下的换行符为LF,所以在执行add.时,git发现改动文件中引入了LF会发出警告你哪些文件不是纯CRLF文件,但git不会自动修改工作区的文件,而是对暂存区进行修改。我们也可不做任何处理,它只是会提示,对代码提交无影响。 $gitadd. warning:LFwillbereplacedbyCRLFin***file Thefile...[>>…]
python的fabric模块实现run运行错误以及run执行shell的结果捕获
在jenkins发布代码前有必要进行代码自动化测试,而最终代码是否需要发布就需要依据自动化测试的结果来处理,jenkins中使用fabric模块调用远程服务器执行shell脚本,比如在方法中调用远程服务器执行docker容器中的代码自动测试,我们期望对run执行的shell脚本进行判断,目标实现逻辑如下: #取得shell执行结果 result=run("dockerexec-itcontainpytest/app/--cov") #根据结果进行处理 ifresult=="Ok": print("测试成功通过,继续发布") else: print("测试失败,终止发布")  ...[>>…]
常见的WSGI服务器Gunicorn、uWSGI了解
常见的WSGI服务器有: 1.Gunicorn:Gunicorn是使用Python实现的WSGI服务器,提供http服务,并在worker工作方式上提供了多种选择,其默认的work_class是sync,即同步阻塞的网络模型,性能不佳。其它的工作方式还有eventlet、gevent(利用python协程实现)、tornado(利用Tornado框架实现)、gthread(采用线程工作模式)、gaiohttp(利用aiohttp库实现异步I/O,支持websocket)。在多进程模式中除了使用多CPU的同时,还可以使用协程来提供并发支撑。和nginx类似,Gunicorn也是一个...[>>…]
关于WSGI、ASGI协议和gunicorn、uvicorn
关于WSGI和ASGI WSGI、ASGI是一种协议规范,也是一种Web服务器与后端应用之间的交流方式。同类型的东西我们能想到CGI公共网关接口CommonGatewayInterface/CGI,CGI是Web服务器运行时外部程序的规范,按CGI编写的程序可以扩展服务器功能、与浏览器进行交互、通过数据API与数据库服务器通信。 WSGI、ASGI则都是Python为了解决Web服务器端与客户端之间的通信问题而产生的,是为Python语言定义的Web服务器和Web应用程序或框架之间的通用协议。并且WSGI(PythonWebServerGate...[>>…]
python项目开发使用pytest计算代码测试覆盖率
上篇文章:http://www.04007.cn/article/963.html讲到使用pytest进行代码自动化测试,测试必然会用到测试用例,那么究竟需要写多少个测试用例呢?有没有个什么标准,这就涉及到一个概念:测试代码覆盖率,测试代码覆盖率是指测试的代码覆盖程度的一种度量方式,是描述程序测试中源代码被测试的比例和程度。代码测试覆盖中需要了解的一些指标名字:1、语句覆盖:被测试代码中的每一个可执行语句是否被执行到,语句覆盖是为“最弱的覆盖”,对一些控制结构的代码他不能真正表示是否完全覆盖到...[>>…]
使用python的xlrd库操作读取Excel文档数据
python操作Excel文档的库有多种,比如xlrd、xlwt、pandas、openpyxl。其中xlrd用于读excel,xlwt可读写excel。今天我这里只需要将excel中的数据读出来存储,就用xlrd方式。使用xlrd需要先安装xlrd模块:pipinstallxlrd和其它的程序语言一样,读excel的过程大概分为,取excel文件操作句柄->取sheet操作句柄->读取行数->循环读取每行数据->在每行数据中取到表格中的数据。使用xlrd方式操作excel的python程序如下: importxlrd file=“files/test.xlsx” #从硬盘读取读取excel文件...[>>…]
fastAPI框架的自动化测试pytest的应用
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。自动化测试是devops中的一个不可或缺的环节,fastAPI框架由于是基于Starlette,而Starlette中集成了pytest这个测试框架,所以在FastAPI框架中实现自动化测试是一个很方便的事情。 只需要引入TestClient直接使用即可。可以从fastapi中引入,也可以从starlette引入,简单示例如下: #fastapi框架中的...[>>…]
Fastapi框架如何提取原始post请求的主体数据内容
因为在调试时我需要得到客户端向服务器端发送的原始数据,而在查看Fastapi框架这一块时发现这个功能不是很好用。之前也了解过如何提取fastapi的请求数据,有篇文章:http://www.04007.cn/article/924.html不过更多的是取得一些请求的header信息等,取post请求的主体信息有提到使用request.body,但在使用时发现只能显示出一个对象,并没有方法从body对象中提取出原始的请求数据。 在Fastapi框架的官方文档中 https://fastapi.tiangolo.com/advanced/using-reques...[>>…]
Python-smtplib邮件发送Relaying denied. IP name possibly forged[IP地址]
使用PYTHON-smtplib需要先安装sendmail,使用aptinstallsendmail命令安装vcb即可,安装完成后sendmail的配置文件在/etc/mail/中,日志文件位于/var/log/目录中,mail.log、mail.err,查看这两个文件信息来定位问题。可以通过命令mail、mailq查看接收到的邮件和待发送的邮件。 $whereissendmail sendmail:/usr/sbin/sendmail/usr/lib/sendmail/usr/share/sendmail 进行邮件发送代码很少,引入模块定义几个参数执行就行了。代码示例如下: importsmtplib fromemail.mi...[>>…]