Python
文章平均质量分 50
结合python实现UI、APP、接口自动化
七月的小尾巴
只要学不死,就往死里学!
展开
-
django-rest-framework框架总结之View视图之APIView、GenericAPIView、视图集ViewSet
基于django-rest-framework框架的View视图进行总结,其中包含APIView、GenericAPIView、视图集ViewSet中的使用和特性,方便日后自己查看资料。原创 2023-02-02 17:18:45 · 1685 阅读 · 2 评论 -
Python + pytest + yaml + allure + mysql + redis + 钉钉/企业微信通知,接口自动化框架V2.0,支持多业务处理,仅需维护yaml用例,无需要编写代码
python + pytest + allure + yaml + mysql + redis + 企业微信通知开源接口自动化框架相关操作文档前言三级目录开源接口自动化框架相关操作文档前言本章节主要针对在 Gitte 中开源的自动化框架,进行相关功能介绍。框架主要使用 python 语言编写,结合 pytest 进行二次开发,用户仅需要在 yaml 文件中编写测试用例,编写成功之后,会自动生成 pytest 的代码,零基础代码小白,也可以操作。框架中支持mysql三级目录...原创 2022-04-05 17:57:22 · 10054 阅读 · 30 评论 -
python 实现禅道 bug 日清通知,发送钉钉并@对应负责人
前言在项目提测阶段,很多公司都会要求bug日清,那么对于这个指标要求,大部分公司都会将这个任务分配给测试去跟进。那么咱们测试人员,总不能说每天去盯着禅道,然后去找对应的开发吧。那么下面就是咱们测试人员的高光时刻,通过脚本去实现统计bug情况,并且钉钉@对应的开发~话不多说,直接开干!数据库封装首先,我们需要连接禅道的数据库,查询出所有项目未关闭的bug数据。# -*- coding: utf-8 -*-# @Time : 2020/12/20 4:25 PM# @Author : 余原创 2022-02-18 10:51:35 · 3703 阅读 · 7 评论 -
处理自动化多进程执行自动化时,企业微信报告通知触发多条
前言原先开源的框架中,多进程执行自动化脚本时,如假设我程序中开启了三个进程,执行用例为100条,此时企业微信通知,会随着所设置的进程数量发送三次,如下截图,实际我自动化场景只是跑了一次,但是执行完成时,给我推送了三条通知这里我希望哪怕是多进程执行,但是每次触发jenkins任务时,通知只需要发送一次,并且汇总整个自动化的执行情况。处理思路这里的处理思路,我采用的是存储到redis缓存中:1、首先程序执行之前,使用pytest提供的钩子函数 pytest_runtest_makereport,收集原创 2022-02-17 10:43:42 · 1487 阅读 · 0 评论 -
使用 mitmproxy + python 做拦截代理,解放双手,生成自动化测试用例
前言是不是有很多小伙伴在做接口自动化的时候,大量的测试用例数据,写的即枯燥,有乏味呢?那么下面你们的福利来啦~本文章会基于 mitmproxy + python 做代理拦截,将我们拦截到的接口请求,转换成 .yaml 格式文件的测试用例,文件格式如下:有的小伙伴是不是会担心,你们的yaml用例数据结构和我不同呢?完全不用担心,文章下方我会提供源码,只需要找到下方截图中的代码,更改你们自己的数据结构即可~下面话不多说,我们进入正文什么是 mitmproxy ?文章地址: https://bl原创 2022-02-09 15:00:35 · 3663 阅读 · 9 评论 -
python面试题,设计装饰器,接收一个int类型的参数,可以用来装饰任何的函数, 如果函数运行的时间大于number,则打印出函数名和函数的运行时间
题目:(面试笔试题)请设计一个装饰器,接收一个int类型的参数number,可以用来装饰任何的函数,如果函数运行的时间大于number,则打印出函数名和函数的运行时间import timedef get_time(number): # 判断参数类型是否是 int 类型 if isinstance(number, int): def decorator(func): def swapper(*args, **kwargs):原创 2021-09-25 17:29:00 · 438 阅读 · 1 评论 -
python每日习题:封装鉴权装饰器
题目:1、编写一个鉴权装饰器,调用被装饰的函数时,需要校验用户是否登录,如果没有登录则需要输入账号,输入密码进行登录(默认正确的账号admin,密码123456)要求:只要有一个函数调用时登录成功,后续的函数都无需再输入用户名和密码思路提示:1、设置一个全局变量来保存是否登录的状态,2、在装饰器中通过判断状态来决定是否要输入账号密码进行登录(登录成功之后修改登录状态)# 登录状态status = {"status": False}def login(func): def swa原创 2021-09-25 16:13:42 · 586 阅读 · 0 评论 -
python每日习题:自己封装失败重跑装饰器
题目实现一个重运行的装饰器,可以用来装饰任何一个功能函数,只要被装饰的函数执行出现AssertionError,则重新执行该函数,同一个函数最多重运行三次。下面讲一下小余在做这道题的心里历程,从昨天下班的时候,看到这道题目做起来真的很上头,一直写到晚上一点钟。当我第一次看到这倒题目的时候,想到的就是递归调用实现def test_run(func): def swapper(a, b, count=0): try: func(a, b)原创 2021-09-25 15:36:38 · 568 阅读 · 0 评论 -
python每日习题:读取excel,根据excel内容实现定制化需求
需求假设上方excel中的内容是我们的测试用例,需要实现需求如下:1、读取excel中的内容,转换成指定数据类型如下:2、现在excel中的case_id 是乱序的,判断根据case_id 进行升序排序3、将所有的请求方式都改成 GET 请求代码实现def get_data(filename): # todo 打开excle xl = xlrd.open_workbook(filename) # 通过索引获取工作表 table = xl.sheets()[原创 2021-09-23 20:08:50 · 425 阅读 · 0 评论 -
每日练习题:开发图书管理系统
需求实现一个简单的图书管理系统,其中包含添加图书、修改图书、图书列表、查询图书、删除图书、借阅图书、归还图书功能。数据库建表CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `position` varchar(40) CHARACTER SET utf8原创 2021-09-11 22:43:19 · 668 阅读 · 0 评论 -
python实现钉钉机器人消息自动化通知
目录前言自定义机器人安全设置自定义关键字加签IP地址钉钉消息通知类型安装使用发送text消息text消息之@指定用户Link消息Markdown消息@所有人Markdown消息@指定用户发送自动化报告前言之前自动化执行成功之后,会发送邮件通知,但是有时候不一定能及时收到测试报告。昨天小余突然奇想,把自动化报告,发送到钉钉上面,并且@指定的相关人员,这样我就不行你还看不到,说干就干,安排~自定义机器人安全设置了解官方文档之后,总结出目前有3种安全设置方式:自定义关键字加签IP地址自定义关键原创 2021-09-03 13:15:54 · 3526 阅读 · 4 评论 -
结合selenium玩转python链式调用
Python 中的链式调用在 Python 中实现一个简单的链式调用就是通过构建类方法并返回对象自身或返回归属类(@classmethod)class Person(object): def name(self, name): self.name = name return self def age(self, age): self.age = age return self def show(self):原创 2021-07-01 13:09:09 · 458 阅读 · 3 评论 -
python工程下方的__init__.py 的隐藏用法,学到了!
python的__init__.py文件的作用平时创建工程的时候,下方都会自动生成一个__init__.py 的文件,但是几乎从来都没有用过,今天我们就来看看,这个文件究竟是做什么用的呢?转载 2021-06-24 12:41:21 · 700 阅读 · 0 评论 -
简历说自己熟练python,面试让你实现单例模式的几种方法,你又了解多少?
单例模式单例模式就是确保一个类只有一个实例.当你希望整个系统中,某个类只有一个实例时,单例模式就派上了用场.比如,某个服务器的配置信息存在在一个文件中,客户端通过AppConfig类来读取配置文件的信息.如果程序的运行的过程中,很多地方都会用到配置文件信息,则就需要创建很多的AppConfig实例,这样就导致内存中有很多AppConfig对象的实例,造成资源的浪费.其实这个时候AppConfig我们希望它只有一份,就可以使用单例模式.实现单例模式的几种方法使用模块其实,python的模块就是天转载 2021-06-17 22:02:18 · 512 阅读 · 1 评论 -
一个10G的文件,但是内存只有4G,使用python如何进行性能调优?
通常我们在读取文件时都会使用with open 方法打开文件,从而读取数据,这种方式快而便捷,但是随着项目越做越大,所要处理的处理也越来越多,我们就需要考虑到对读取文件的代码,做一定的优化。如下通常读取文件的代码,假设file.txt大小约为10K,在程序处理上,并没有特别大的感知:def get_lines(): with open('file.txt','rb') as f: return f.readlines() if __name__ == '__main__': # 处转载 2021-06-17 16:17:16 · 1120 阅读 · 0 评论 -
python深入理解yield以及和return的区别
Python 中 yield 用法详解yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:def addlist(alist): for i in alist: yield i + 1取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项:alist = [1, 2, 3, 4]for x in addlist(alist): p转载 2021-06-17 15:56:48 · 1720 阅读 · 0 评论 -
python习题:输入日期, 判断这一天是这一年的第几天?
输入日期, 判断这一天是这一年的第几天?class GetDays: # 获取到用户输入的年份 def __init__(self, data): # 根据‘-’符号分割,得到一个数组,如['2021', '6', '11'] self.dates = data.split('-') self.years = int(self.dates[0]) self.month = int(self.dates[1]) .原创 2021-06-15 11:13:52 · 2468 阅读 · 4 评论 -
Python一行代码教你实现列表嵌套排序
前言当你想要实现Python列表中的嵌套数据,然后对数据进行排序的时候,是不是脑海中已经思考各种for循环或者while循环列表中的数据,然后对列表中的数据进行排序?小编今天在做运营报表统计的自动化的时候,就遇到了这么个需求,下面让大家看一下,小编是如何通过一行代码来实现这个需求的~数据类型首先,我们来看看小编公司接口返回的数据类型:test = [ {'addressId': 1, 'addressName': '上海', 'num': 0.0, 'principalName': '无原创 2021-05-10 23:58:01 · 1798 阅读 · 0 评论 -
Python判断数字四舍五入
import decimalfrom decimal import Decimalcontext=decimal.getcontext() # 获取decimal现在的上下文context.rounding = decimal.ROUND_05UPprint(format(Decimal(2.434), '.2f')) #'2.6'结果:2.43Process finished with exit code 0原创 2021-04-22 14:52:28 · 217 阅读 · 0 评论 -
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matchin问题
最近在测试分销的项目,每次手动计算分销员的佣金,感觉特别麻烦,所以想着用 python 来实现自动计算佣金,但是在计算过程中遇到一个问题,如下:问题描述如图,在佣金矩阵计算相加的时候, numpy 抛了一个异常,这个异常在网上也没有找到相关资料。于是我打断点看了一下,发现在计算的时候, list 中的数据,返回的是 str 类型,导致矩阵相加的时候,计算失败了。然后我又去看了一下自己写的佣金计算规则的代码,需求中有个如果佣金金额大于两位小数的时候,会将数据四舍五入保留两位小数,但是保留两位小数原创 2021-04-22 11:43:48 · 40504 阅读 · 13 评论 -
for循环将字典添加到列表中出现覆盖前面数据的问题
错误代码:# -*- coding: utf-8 -*-# @Time : 2021/4/19 11:27 PM# @Author : 余少琪# @FileName: test.py# @email : 1603453211@qq.comuser_list = []dic = {}for i in range(3): username = input("请输入您的用户名:") password = input("请输入您的密码:") dic["用户名"转载 2021-04-19 23:59:22 · 982 阅读 · 0 评论 -
python之qrcode生成二维码
目标:完成自动生成二维码功能,可以跳转至想要跳转的地址准备1、python环境2、涉及到的python库需要 pip install 包名 安装pip install qrcodepip install pillow代码实现# -*- coding: utf-8 -*-# @Time : 2021/4/19 10:50 AM# @Author : 余少琪# @email : 1603453211@qq.comimport qrcodefrom PIL import原创 2021-04-19 20:52:20 · 1312 阅读 · 5 评论 -
python+PIL实现图片对比
安装依赖库pip install pillow贴代码:from PIL import Imageimport mathimport operatorfrom functools import reducedef compare_images(pic1, pic2): # 使用Image函数拿到图片 image1 = Image.open(pic1) image2 = Image.open(pic2) # 获取图片 RGB 的值,返回的是一个数组list h原创 2021-04-19 18:16:04 · 1473 阅读 · 0 评论 -
Python之PIL生成验证码
前言准备代码编写引入库配置初始化参数生成随机字符串生成干扰线和干扰点生成验证码的函数调用完整代码前言网站为例防止恶意注册、发帖等恶意操作而设置了验证码,其原理是将一串随机产生的数字或字母生成一幅图片,图片上加一下干扰元素。本文介绍利用python生成一个验证码,其中代码做了注释并于相关知识的解答完成目标:生成如图所示的验证码准备1、python 环境2、涉及到的 python 库需要 == pip install == 包名 安装代码编写引入库配置初始化参数生成随机字符串生成干扰线转载 2021-04-19 16:39:11 · 764 阅读 · 1 评论 -
Python Faker的使用,你了解多少呢?
在软件需求、开发、测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据。 由于现在的业务系统数据多种多样,千变万化。在手动制造数据的过程中,可能需要花费大量精力和工作量,此项工作既繁复又容易出错,而且,部分数据的手造工作无法保障:比如UUID类数据、 MD5、SHA加密类数据等。现在python中提供了faker库,可以解决这些问题,让我们一起来看一下吧~~...转载 2021-04-07 18:25:52 · 2890 阅读 · 0 评论 -
Python一键导入所有第三方库requirements
通常我们在导入一个Python 项目中可能安装很多安装包, 再次创建虚拟环境是需要重新安装的话很麻烦也费时间, 或者项目部署的时候避免重装,那我们如何解决这个问题呢?可以将现有项目的所有安装包记录在requirements.txt 文件, 再另一个环境下一键安装所有安装包。requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:pip freeze > requirements.txt原创 2021-04-07 13:23:01 · 1880 阅读 · 3 评论 -
Python检测代码覆盖率工具之coverage
代码覆盖率是什么?为什么要统计代码覆盖率?代码覆盖率指的是在统计时间段内哪些代码被执行过或者被调用过,它会统计从代码开始执行到结束执行一共执行了多少代码比例。为什么要统计?比如我们有一个测试需求,按业务等设计了测试case,但是我们并不清楚自己的测试case到底有没有覆盖所有业务场景,这个时候coverage就可以派上用场coverage 统计python代码覆盖率# 加上国内下载源确保下载成功pip install coverage -i http://pypi.douban.com/sim原创 2021-03-31 17:08:16 · 2079 阅读 · 0 评论