自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 parsel html提取值处理

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>标签选择器</title></head><body> <p>css标签选择器的介绍</p> <p class='p'>标签选择器、类选择器、ID选择器</p> <a href=

2021-08-05 18:07:41 556

原创 接口契约校验

json_verify说明: 主要用于json数据diff,输出匹配的字段信息、字段匹配准确率安装方式:pip install json_verify1、 生成契约校验实例from json_verify import JsonVerifydemo_json = { "msg": "一段文字信息", "phone": 13746067836, "name": [ {"age": 12}, {"phone": 213213, "age"

2021-08-02 15:25:20 552

原创 python 魔法函数 1

构造函数__init__ (构造函数)实例化对象 class Person: # 实例化一个人类 def __init__(self, hight, weight, sex): self.hight = hight self.weight = weight self.sex = sexnew_person = Person(185, 80, women)print(new_person.hight)print(new_perso

2021-07-21 15:25:37 140

原创 pycharm无法调式卡在connect界面

1、应用程序模块名与pycharm debug 模块重名pycharm会报错无法调式,重命名模块即可2、程序包含特殊导入eg: from locust import main调式程序一直会卡在这个代码段无法进入端点处

2021-06-23 21:27:53 810 1

原创 The desired capabilities must include either an app, appPackage or browserName

appium连接提示需要app参数或者appPackage or browserName参数 caps = { 'platformName': 'android', 'skipServerInstallation': True, 'skipDeviceInitialization': True,'deviceName': 'KWG5T16324000391', 'newCommandTimeo': '60'}使用桌面版appium会报此错误,博主使用后安装无桌面版本appium后启动正常使

2021-06-21 10:03:58 2901 3

原创 at android.os.Binder.execTransact(Binder.java:731)‘; Code: ‘255‘

此报错在appium启动手机时desired_capabilities={ 'platformName': 'android', 'skipServerInstallation': True,'skipDeviceInitialization': True, 'deviceName': 'XXXX', "newCommandTimeo": 60,"unicodeKeyboard": True,}driver = webdriver.Remote(command_executor='http:

2021-06-21 09:56:27 679

原创 selenium wedriver镜像地址

geckodriver(Firefox): “https://github.com/mozilla/geckodriver/releases”国内镜像: “http://npm.taobao.org/mirrors/geckodriver/”Chromedriver(Chrome): “https://sites.google.com/a/chromium.org/chromedriver/home”国内镜像: “http://npm.taobao.org/mirrors/chromedriver/”

2021-06-02 09:07:54 693

原创 json格式转换为yaml格式乱码

使用pyyamlimport yamla = {"name": "小李", "school": [1 ,2 ,3]}res = yaml.dump(a,default_flow_style=False, encoding='utf-8', allow_unicode=True)print(res)结果:# 加上后面参数防止中文乱码yaml.dump(a, default_flow_style=False, allow_unicode=True)print(res)...

2021-05-11 20:27:38 460

原创 python exec 函数内部使用

code = """import requestsdef session(): return requests.session()"""def demo_func(code): exec(code) print(locals().get("session")()) res = demo_func(code)执行函数时出现报错:正确使用:code = """import requestsdef session(): return requests.ses

2021-05-11 13:37:10 179

原创 钉钉机器人文字样式

本文主要介绍markdown格式的机器人文本内容:先上钉钉机器人开发者演示:{ "msgtype": "markdown", "markdown": { "title":"杭州天气", "text": "#### 杭州天气 @150XXXXXXXX \n> 9度,西北风1级,空气良89,相对温度73%\n> ![screenshot](https://img-blog.csdnimg.cn/img_convert/eab4ea2c673

2021-04-08 14:13:30 4989 11

原创 7. python faker

faker的解释Faker是一个Python包,它会为你生成假数据。无论您是需要启动数据库、创建漂亮的XML文档、填写持久性以进行压力测试,还是将从生产服务获取的数据匿名化,Faker都适合您。常用场景:接口请求时创建随机数安装方法: pip install faker -i https://pypi.douban.com/simple使用方法:from faker import Fakerfaker = Faker(locale='zh-CN') # 支持的语言分类 zh-CN代指中文pr

2021-04-06 15:22:47 184

原创 5. jmespath处理json数据

安装jmespathpip install jmespath -i https://pypi.douban.com/simple常用:(同作用其他类似库:jsonpath)1、提取接口响应数据作为关联接口参数化数据来源2、提取接口关键字信息作为接口校验的字段实际值与期望值比较常见接口响应数据:response = { "code": 0, "message": "操作成功", "data": [ {"id": "421", "group_name": "前台1", "em

2021-04-06 11:20:22 344

原创 6. python读取yaml文件

目录结构:实际在接口自动化我们可以使用很多类型的配置文件如: ini、json、config等这里我们使用yaml因为格式清晰、层级目录结构有颜色标注__|-- demo.yaml|–yamlTreating.py文件内容demo.yaml# yamlTreating.pyimport yamlwith open('demo.yaml', 'r', encoding='utf-8') as f: content = f.read() file = yaml.load

2021-04-06 09:56:42 95

原创 python 连接数据库

专注于MySQL数据库,其他数据库都存在相对应的python库,使用方法大同小异。自行百度···import pymysqlDATA_BASE = {'host': '10.118.XX.XX', 'user': 'root', 'port': 3306, 'password': '#0516#', 'database': 'testfirstroom', 'charset': 'utf8'}conn = pymysql.connect(**DATA_BASE) # 实例

2021-03-31 19:49:07 92

原创 python 读取excel

读取指定的excel文件from openpyxl import load_workbookclass ExcelTreating: def __init__(self, excel_path): self.workbook = load_workbook(excel_path) # 实例化excel文件操作对象 def read_excel(self, sheet_name): sheet = self.workbook(sheet_name) # 实例化一个excel表单操作

2021-03-31 18:45:41 139 2

原创 圣诞节到了

圣诞节到了,公司举行交换礼物活动,参加的员工每人准备一个礼物。交换完成后,自己的礼物会随机给到另一个人,自己也能随机获得一个其他人准备的礼物。不要求A享了B的礼物,B就一定要拿A的只要自已不拿自己的即可。为公平起见,请你写一个随机程序来决定礼物如何分配。import randompresent_list = {"A": "preA", "B": 'preB', "C": "preC"} # 参与人员列表对应的礼物person_ist = [k for k in present_list] #

2021-03-31 14:48:46 819 4

原创 一堆数据进出栈操作 {a, b, c, d, e, f, g}

笔试题:1堆数据进行进出栈操作,入栈顺序为{a, b, c, d, e, f, g},可能的出栈顺序为A 、 {f,e,g,d,b,a,c};B 、 {c,d,e,f,a,g,b};C 、 {e,f,d,g,b,c,a};D 、 {d,e,c,f,b,g,a};解析:本题栈中是先进后出栈、本题使用排除法每个选项逐步排除,找出正确答案:D本题只写如何判断D正确其他选项可按照此方法排除, {}数据左边为栈最底层变化后数据取出数据放入数据{}放入a,b,c,d{a,

2021-03-31 14:20:25 1803

原创 10 22 -6 14 规律

笔试题:找出 10 22 -6 14的下一个数字第一组 :10 , 22 ; 22-10=12 | 12/(-2)=-6第二组 :22 , -6 ; -6-22=-28 | -28/(-2)=14第三组 :-6 , 14; 14-(-6)= 20 | 20/(-2)= -10所以下一个数为-10...

2021-03-27 20:24:44 1322

原创 2 python requests

requests 请求百度import requestsurl = 'https://www.baidu.com'response = requests.get(url) # 使用requests库向百度发起一个请求print(response.text) # 打印接口返回的文本内容,若返回为json数据则打印返回的jsonprint(response.json()) # 打印返回的json数据,如果返回数据结构不是json则会抛出异常# 接口请求中常用接口返回的json数据进行断言、数据

2021-03-23 20:19:56 133

原创 python接口自动化

python接口自动化库依赖所有库均为第三方库,python自带库在本文中不做重点介绍。第三方库统一安装方式:​ pip install <库名>为了安装速度更快可使用国内镜像地址:​ pip install -i https://pypi.douban.com/simple常用库(本项目中使用)库名其他类似库主要功能连接requestshttpx、urllib3发送http、https请求使用openpyxlpandas、xrld处理exce

2021-03-22 19:57:57 113

原创 程序收到一段如下文本

程序收到一段如下文本:v=0o=RTSP Session 00 IN IP4 0.0.0.0s=Media Serverc=IN IP40.0.0.0t=o oa=control:-a=packetization-supported:DHrn=video 0 RTP/AVP 96a=control trackIDa=framerate:25.000000检验这段文本是否满足如下条件∶1)除空白行外,每行都有一个等于号;2)紧挨着等于号的左右两边都不存在空格;3)等于号左边只允许存在一个

2021-03-05 14:26:04 114

原创 笔试题:防止黑客获取到客户输入密码

为了防止被黑客获取到客户输入的密码,某银行在琶陆软件上以屏幕输入法输入密码。该输入法有9个按钮。每个按钮上有不多于3个空母。字母有先后顺序。按第一个字母需要用鼠标点击按钮一次。第二个字母需要点击2次,第3个字母需要点击3次。若连续两个字母都在同一个按钮上。则输入第一个字母后需要等待一小段时间。假设某客户输入习惯是∶点击按钮需要1单位时间,等待一小段时间为2单位时间。某次登陆的时候,9个按钮上的字母分别为 azc dwf gti jal mon pkr shu vex yb求该客户输入他的密码的时间。

2021-03-05 12:31:17 548

原创 AttributeError: Got AttributeError when attempting to get a value for field

使用 django restftramework报错请求url:当请求结果返回列表时需要在序列化是添加many=trueserializer 序列化器 天机many=True

2021-03-03 16:57:27 2716 2

原创 python通过装饰类装饰类下所有方法(2)

from types import FunctionTypedef outer(my_class): class Inner(my_class): def __init__(self): for var, value in my_class.__dict__.items(): # 遍历被装饰类(myclass)的所有类方法 if isinstance(value, FunctionType):

2020-12-03 10:26:03 278

原创 python通过装饰类装饰类下所有方法(1)

废话不多说,直接上源码def outer(myclass): class Inner(myclass): def __getattribute__(self, item): x = super().__getattribute__(item) # 调用父类的getattribute方法 print('这里可以写入你的功能函数') return x return Inner

2020-12-01 19:51:21 610

原创 Pycharm 一直discovering

原因: 常见于pycharm卸载后再次安装,当每个项目打开后选择解释器 这样每个项目都有自己的解释器当同时打开多个项目时pycharm会去每个项目解释去查找模块 导致一直查找模块是否更新解决办法设置默认系统解释器第一步:第二步:点击add注意:点击showall如果发现弹出窗口有项目解释器要点击新窗口右边‘’-‘’号删除第三步:点击下图框选图标第四步:点击···,后选择解释器,然后点击ok注意:完成后showall解释器只剩下一个系统安装路径的解释器,下次直接点选就好了..

2020-10-29 20:36:11 3249

原创 python自动化关联接口参数化(3)高阶

1、接口请求数据参数化替换

2020-10-21 20:32:32 279 1

原创 python自动化关联接口参数化(2)高阶

1、接口数据保存源码import reimport astimport jmespathclass BaseModel: ''' 返回值参数化保存的全局变量视图 ''' var_map = {} class SaveResponseData: def save_data(self, save_key_list, raw_data): """ :param save_key_list: 需要保存的

2020-10-21 20:28:51 428

原创 pytest集成loguru输出到allure报告

loguru日志内容丰富颜色多样,已有很多博客介绍这里就不详细介绍了1、使用pytest时正常使用logurufrom loguru import loggerlogger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {message}")执行完pytest测试用例后使用 allure serve allure_report生成测试报告:1、allure文件没有txt文件2、html报告无log日志2、解决方案使用时

2020-10-16 19:26:22 3196 3

原创 python 获取当前运行函数名称

# 函数内部直接获取当前运行函数名称import sysdef get_fun_name(): return sys._getframe().f_code.co_nameprint(get_fun_name())>>> get_fun_name# 动态获取运行函数名称import inspectdef get_dynamic_name(): return inspect.stack()[1][3]def name(): return get_

2020-09-17 13:42:54 431

原创 python logging日志封装

接口自动化日志封装目录结构|–mylog.py|–log.txt# mylog.pyimport loggingfrom setting import config_var# from Common.Pathfile import log_pathclass MyLogging(): """自定日志之类""" def __init__(self, level): self.level = level def my_log(self):

2020-09-14 21:27:30 362

原创 接口自动化数据存储与读取(2)

使用内置函数读取import reclass RecordFirstLinePlace: CordPlace = {} # 记录每一行title在列的位置,使用索引取值时会使用其中记录的数据class TableTreating: def __init__(self, filename): self.filename = filename self.filepath = filename self.wb = load_workbo

2020-09-14 15:42:22 409

原创 自动化测试数据存储与读取(1)

1、数据存储方式一般:yaml文件、数据库、json文件、直接使用python文件、excel表格本次使用excel作为测试数据保存文件,方便直接查看修改、维护excel数据结构我们使用第三方库openpyxl安装方式: pip install -i https://pypi.douban.com/simple openpyxl支持格式以.xlsx结尾的文件from openpyxl import load_workbookwb = load_workbook('FirstRoom.xl

2020-09-11 22:22:12 984

原创 pytest(02) allure测试用例名称动态生成(函数内部控制用例名称)

上一章:说明如何控制用例名称长度,如果我们想在函数内部控制测试用例名称,可以使用allure.dynamic动态生成测试用例名称源码实现:import pytestimport alluretestdata = [{'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1', 'yapi_id': 1471, 'req_query': '{}', 'req_body': '{"op

2020-09-11 10:49:49 1427 2

原创 pytest(01)allure 报告用例名称paramtrize控制

1、使用paramtrize传参优点减少代码编写亮,提高测试用例的编写效率,但若paramtrize传参的参数过长时会影响用例名称显示:这样使得测试用例名称不够美观,那么如何使用paramtrize传参使得用例名称美观而数据又能在测试函数内部使用将至关重要。源码实现:import pytestimport alluretestdata = [{'CaseId': 33, 'url': '/saas-api/stock/out-ticket/save', 'CaseName': '保存p1',

2020-09-11 10:25:50 707

原创 python自动化关联接口返回值参数化(1)初阶

转载请注明出处:1、返回数据参数化1.1 常处理接口请求返回值参数化是接口请求中避免大量维护测试用例关键,如何做好参数化是能否提高自动化用例转换效率的关键。通常接口自动化会将接口返回值所有内容保存到临时变量,在需要使用时按照层级接口取出,依据自定义规则替换到请求数据。痛点:保存完整数据结构内存消耗大替换时需要写出长长的层级结构接口使用到相同数据时,每次替换都需要写层级结构替换替换数据时需要多次查看接口文档,观察层级结构常用替换规则举例import re# 实例:接口B请求时依赖接口

2020-09-09 14:41:50 1720 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除