python
文章平均质量分 62
z917185537
这个作者很懒,什么都没留下…
展开
-
pytest并发执行用例方案
经过上面的折腾终于解决了windows上使用pytest-parallel的问题,但是始终要去修改pytest-parallel中的内容,决定改为使用pytest-xdist,安装最新版本的pytest-xdist , 安装后执行即可 , 发现pytest-xdist会导致scope=session的fixture设置失效,即导致每个用例都会执行一次此fixture,正常情况是只需要执行一次的,详见session失效的解决办法。原创 2024-05-12 22:22:45 · 494 阅读 · 0 评论 -
通过pytest-xdist插件并发执行用例时, scope=session的fixture会运行多次问题的解决方案
在UI自动化项目中,使用的是pytest + playwright, 需要实现同一个用户只登录一次的,所以在conftest.py中定义了一个scope=session的fixture,然后在此fixture中实现了系统登录,在非并发模式下执行的时候,能保证同一个用户只登录一次,但是并发执行的时候每个case都会执行登录。原创 2024-05-12 22:22:17 · 448 阅读 · 1 评论 -
pyenv-win管理windows上多个版本python
是一款管理多个python版本的工具,可以便捷的切换使用的python版本,但是不支持windows环境,在windows环境需要使用。原创 2024-04-15 22:47:31 · 466 阅读 · 1 评论 -
pytest-parallel包报错Can‘tpickle local object ‘pytest_addoption.<locals>.label_type.
【代码】pytest-parallel包报错Can‘tpickle local object ‘pytest_addoption.<locals>.label_type.原创 2024-04-08 09:12:54 · 257 阅读 · 0 评论 -
python re正则表达式对象
返回已编译的正则表达式对象,可以用于匹配re.compile(r"\d{3,9}") # 匹配数字,并且是3-9位的数字re.compile(r"^test\w*", re.I) # 匹配test开头的字符串,test不区分大小写re.compile(r"^t.*", re.S) # 匹配t开头后续匹配任意字符串(包括换行符)原创 2024-01-04 16:26:42 · 953 阅读 · 0 评论 -
pytest_collection_modifyitem对用例进行过滤
在收集完用例后执行,通过此hooks,在。y中可以实现对用例的过滤和重新排序。原创 2023-12-14 18:03:31 · 624 阅读 · 0 评论 -
自动化测试脚本中获取剪切板的内容
点击页面上按钮后,获取信息在剪切板,方便快速粘贴,需要对获取的内容进行验证。原创 2023-12-14 16:44:03 · 446 阅读 · 0 评论 -
strftime(“%-m/%-d/%Y“) 报错 ValueError: Invalid format string
运行测试用例时,出现。原创 2023-12-09 18:12:55 · 605 阅读 · 0 评论 -
自动化测试--验证邮件内容
创建访问凭证credentials.json。是自定义方法,分别是获取时间和获取文件。其中DateFormat 和。要访问gmail先要去。原创 2023-11-03 16:58:46 · 342 阅读 · 0 评论 -
playwright: 通过Route对象处理请求
执行请求并且返回结果, 返回值类型是 APIResponse。终止路由请求, 并且可以设置。原创 2023-09-18 23:23:23 · 1542 阅读 · 0 评论 -
pytest实现日志按用例输出到指定文件中
执行自动化用例时,希望日志按用例生成一个文件,并且按用例所在文件生成目录,用例失败时便于查看日志记录。原创 2023-09-12 22:35:47 · 610 阅读 · 0 评论 -
playwright对谷歌插件进行自动化测试
浏览器自动导入谷歌插件,并且对插件功能进行测试。test_case.py测试文件中。原创 2023-08-31 14:17:01 · 845 阅读 · 0 评论 -
playwright迭代元素
/原创 2023-08-21 22:30:35 · 594 阅读 · 0 评论 -
pipenv虚拟环境管理工具使用总结
之前管理项目的依赖文件用pip生成requirements.txt,每次依赖的包有更新后都需要手动更新一下requirements.txt,不方便而且有时还会忘记更新,后来接触到pipenv这个工具很好用,部署新环境也很方便,简单记录一下常用的命令和需要注意的地方。原创 2023-07-27 18:37:59 · 1538 阅读 · 0 评论 -
pytest命令执行
pytest.ini文件。原创 2023-06-14 09:14:11 · 1824 阅读 · 0 评论 -
playwright: wait_for_load_state等待页面加载到指定状态
page对象的方法,用于等待页面加载到指定状态。原创 2023-02-09 09:41:07 · 7664 阅读 · 0 评论 -
playwright 脚本调试
编写playwright脚本的过程中会涉及到脚本的调试,调试的话主要用Playwright Inspector来进行调试,可以通过以下几种方式来调试。原创 2022-09-07 23:41:22 · 1897 阅读 · 0 评论 -
python接口测试时,请求参数通过JavaScript加密后如何处理
问题描述python进行接口测试,请求参数被JavaScript加密,以这篇文章中的问题为例子解决思路解决办法就是对参数进行加密,调用执行JavaScript操作步骤把涉及到的aes.js文件保存下来,重命名为encryp.js把涉及到的aesEncrypt、encode64方法添加到encryp.js文件中python代码中调用js,对需要加密的字符串进行加密#coding=utf-8import requestsimport execjsfile="C:\\Users\\A原创 2021-07-29 19:01:56 · 356 阅读 · 0 评论 -
selenium自动化-下拉列表
selenium操作下拉列表select/option标签举个例子ul/li标签验证js是否能选中未显示的值结论python代码实现selenium自动化获取对象时,肯定会涉及到下拉列表,项目中遇到的下拉列表:通过select/option标签实现 或者ul/li标签实现,记录一下两种实现方式如何获取下拉列表的值select/option标签针对select标签类型的不能通过点击事件选择值,需要使用Select模块,其中有三种选中值的方式select_by_index(index):通过下标选择原创 2021-07-22 15:10:38 · 729 阅读 · 1 评论 -
selenium自动化-上传文件和下载文件
下载文件设置默认下载地址,将文件自动下载到设置的目录def download_file(url,loc): option = webdriver.ChromeOptions() # 获取当前工作路径 cwd=os.getcwd() wpath = path.join(cwd,"download") #当前工作路径下的download文件夹 if not path.exists(wpath): os.makedirs(wpath) prof原创 2021-07-22 15:17:06 · 607 阅读 · 0 评论 -
pytest中参数化方法,并且根据执行的命令进行动态参数化
@pytest.mark.parametrize多个参数,list格式,每个元素间的值以元组表示参数值组合添加用例标识添加 name标记,可通过-m name来执行指定用例#coding=utf-8import pytesttestdata = [ (3, 4, -1), (6,3, 3),]@pytest.mark.parametrize("a,b,expected", testdata)def test_timedistance_v0(a, b, expect原创 2021-07-21 21:14:02 · 3624 阅读 · 1 评论 -
pytest执行用例时返回异常ModuleNotFoundError: No module named ‘***‘
问题描述通过pytest执行用例会返回异常:ModuleNotFoundError: No module named '***'通过python -m pytest执行用例可以正常执行通过pycharm进行run对应的用例文件,可以正常执行项目目录结构和test_dir.py文件中的内容如下问题出现原因python -m pytest和pytest区别:python -m pytest会把当前项目的目录添加到sys.path(指定模块的搜索路径)中通过pycharm进行运行的时候原创 2021-07-21 21:10:32 · 4926 阅读 · 4 评论 -
pytest自动发现用例命名规则和修改默认命名规则
自动发现用例命名规则未指定目录和文件,则是当前目录下递归搜索test_.py或者_test.py文件测试类名必须以Test开头,并且测试类中不能包含__init__方法测试函数或方法以test为前缀修改默认规则在项目所在目录添加pytest.ini文件,并且内容如下[pytest]python_files = check_*.pypython_classes = Checkpython_functions = *_check check_* test_* *_testpytho原创 2021-07-17 23:44:50 · 591 阅读 · 2 评论 -
unittest框架基础和报告输出
setUptearDownsetUpClasssetUpModuleAPIunittest.TestCaseunittest.IsolatedAsyncioTestCaseunittest.FunctionTestCaseunittest.TestSuiteunittest.TestLoaderunittest.TestResultunittest.TextTestResultunittest.TextTestRunner断言跳过测试预计的失败expectedFailure()原创 2021-07-11 18:21:34 · 637 阅读 · 3 评论 -
pandas读取csv文件报:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xad in position 0: invalid start
问题:通过pandas.read_csv("file",encoding="utf-8")读取文件报异常UnicodeDecodeError: 'utf-8' codec can't decode byte 0xad in position 2: invalid start byte,如图所示:原因:由于被读取的文件格式不是utf-8格式,而encoding参数设置的utf-8解决办法:修改文件的格式为utf-8查看文件的编码格式使用notepad++打开文件,可以看到右下角是文件的编码格式原创 2021-06-07 22:26:42 · 556 阅读 · 0 评论 -
python-set对象内置方法
list字符串setdicttuple原创 2021-06-06 20:00:19 · 186 阅读 · 3 评论 -
python-dict对象内置方法
items:返回字典对象key和value值的列表keys:返回字典对象key值的列表values:返回字典对象value值的列表get(key,default):获取字典对象key对应的value值,若不存在对应的key,则返回default,default默认值是Nonesetdefault(key,default):若字典存在key,则返回key对应的值,若不存在则设置key,default默认为None>>> d.items()dict_items([('a', 1),原创 2021-06-06 18:44:19 · 251 阅读 · 0 评论 -
python-tuple对象内置方法
tuple对象和list对象类似,可索引、切片,但是tuple不能修改,区别详见count(value):返回元组中value值的次数,若不存在value,则返回0index(value):返回元组中value值第一次出现的下表,不存在,则报valueError异常>>> t=("a","b","c","a")>>> t.count("a")2>>> t.count("b")1>>> t.count("e")0>原创 2021-06-06 18:43:34 · 134 阅读 · 0 评论 -
python-str对象内置方法
capitalize:将字符串的第一个字符转换为大写,返回一个新的字符串title:将字符首字母转为大写,其余小写,注意和capitalize区别casefold:将字符串都转为小写,返回一个新的字符串lower:将str对象中的字符转为小写,同casefold方法upper:将str对象中的字符转为大写swapcase:将str对象中的大写转为小写,小写字符转为大写>>> 'a bc'.capitalize()'A bc'>>> 'a bc'.title原创 2021-06-05 23:55:56 · 472 阅读 · 3 评论 -
python-list对象内置方法
append(object):list对象后追加对象(参数做为一个整体),返回一个listextend(iterable):参数必须是可迭代对象,将可迭代对象追加在list对象后>>> l=[1,3,5,"a","b","ab","b"]>>> l.append("c")>>> print(l)[1, 3, 5, 'a', 'b', "ab","b",'c']>>> L2=[4,5,6]>>> l.app原创 2021-06-05 23:28:05 · 245 阅读 · 0 评论 -
python内置工具库之time模块&datetime模块
d原创 2021-05-25 13:01:40 · 140 阅读 · 0 评论 -
python之什么是装饰器,如何实现一个装饰器
闭包定义在函数内部的函数,对外部作用域的变量进行应用。闭包中不可以修改外部函数的局部变量作用:闭包执行完后,任然能够保持当前的运行环境闭包可以根据外部作用域的局部变量来得到不同的结果装饰器:不改变代码结构的情况下给代码添加新的功能将被装饰的函数当做参数传递给装饰器函数,并返回装饰后被装饰的函数函数的注释、函数名、注解、签名 会丢失对内部的函数添加@wraps装饰带参的装饰器装饰器可以是函数也可以是类装饰器可y...原创 2021-05-19 09:49:12 · 229 阅读 · 0 评论 -
python内置函数(三)
内置函数函数用途@property@classmethod@staticmethodenumerate(iterable, start=0)返回一个枚举对象filter(function, iterable)用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器,filter(function, iterable) 相当于一个生成器表达式,当 function 不是 None 的时候为 (item for item in原创 2021-05-14 23:40:48 · 98 阅读 · 0 评论 -
python内置函数(二)
内置函数函数用途len(X)max()min()zip(*iterables)创建一个聚合了来自每个可迭代对象中的元素的迭代器dir([object])open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)help([object])enumerate(iterable, star原创 2021-05-13 21:10:15 · 411 阅读 · 0 评论 -
python内置函数(一)
内置函数函数用途abs(x)返回一个数的绝对值pow(base, exp[, mod])返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余round(number[, ndigits])返回 number 舍入到小数点后 ndigits 位精度的值sum(iterable, /, start=0)从 start 开始自左向右对 iterable 的项求和sum(iterable, /, start=0原创 2021-05-13 14:15:23 · 252 阅读 · 0 评论 -
python-迭代器和生成器
定义实现应用原创 2021-05-10 10:16:20 · 130 阅读 · 0 评论 -
playwright安装及脚本录制
安装例子录制脚本工具原创 2021-05-09 21:45:18 · 4884 阅读 · 1 评论 -
python-with语句上下文管理器
s原创 2021-05-07 16:23:12 · 101 阅读 · 0 评论 -
Python中的推导式
列表推导式集合推导式字典推导式原创 2021-05-06 12:53:37 · 98 阅读 · 0 评论 -
python基础数据类型序列-字符串、列表、元组、集合、字典的比较
文章目录符串、列表、元组、集合、字典对比数据操作索引----字符串、列表、元组切片----字符串、列表、元组相加/相乘----字符串、列表、元组相加相乘增加值----列表、字典、集合修改元素----字符串、列表、字典删除元素 ----列表、集合、字典排序sorted ----字符串、列表、集合、元组、字典比较集合求差集、交集、并集并集交集差集数据转换:字典格式的字符串/ json对象转为字典两个列表/元组/集合 转为字典字典转为列表/元组/集合嵌套的列表/元组/集合转为字典符串、列表、元组、集合、字典对比原创 2021-01-18 22:47:46 · 1098 阅读 · 0 评论