摘要:
逻辑是这样的,判断一张表如果在指定时间内未更新数据,则结束循环。但是如果一直和数据库保持连接,会发现查询出来的结果一致不更新 原因在于: Mysql的存储引擎InooDB的事务隔离级别默认是 可重复读(Repeatable Read),例如A客户端事务未提交,而B客户端事务修改了数据,A客户端只能读 阅读全文
摘要:
常用系统模块 os:与操作系统交互 os.name/ os.sep/ os.linesep.: 系统名称/系统路径分隔符/系统换行符 os.mkdir()/os.makedirs(): 建立目录/建立多级目录 os.getenv("PATH"): 获取系统PATH环境变了的设置 os.curdir/ 阅读全文
摘要:
本系列前五篇其实已经将pluggy的流程原理等分析完了,只有PluginManager类还有几个方法的源代码没有提到,这里将这些方法拿出来简单的分析一下,因为有可能会用到,当然也有可能根本不会用这些 (1)unregister 取消注册插件 注册插件的过程都分析过了,取消注册过程就简单了,这里可以简 阅读全文
摘要:
经过pluggy源码解读系列1-4的分析,已经完成插件定义、spec定义,插件注册等环节,下面就到了调用插件执行了,即hook钩子函数是如何被调用执行的,下面还是先把pluggy使用的代码放下面: import pluggy # HookspecMarker 和 HookimplMarker 实质上 阅读全文
摘要:
首先还是把pluggy使用的代码放在这,前面已经分析完add_hookspecs的源代码,下面紧接着就是注册插件了 import pluggy # HookspecMarker 和 HookimplMarker 实质上是一个装饰器带参数的装饰器类,作用是给函数增加额外的属性设置 hookspec = 阅读全文
摘要:
pluggy使用举例子代码: 下面这个例子中前面已经分析完了,下面的步骤就是pm.add_hookspecs(MySpec) 这个一步骤了,同样,这个add_hookspecs方法也是PluginManager类的一个方法,下面就针对这个函数进行分析 import pluggy # Hookspec 阅读全文
摘要:
PluginManager类简介 首先还是把pluggy的小例子放在这: import pluggy # HookspecMarker 和 HookimplMarker 实质上是一个装饰器带参数的装饰器类,作用是给函数增加额外的属性设置 hookspec = pluggy.HookspecMarke 阅读全文
摘要:
简介 pluggy是一个非常优秀的插件系统,它是理解pytest的核心,只有理解了pluggy的原理,才能更好的理解和使用pytest,否则见到了pytest的很多应用都会感觉很难理解 pluggy插件总共的代码量不足一千行,而实现的功能却是如此的强大和好用,这不由得让我们对pytest的源码实现充 阅读全文
摘要:
前言 ①当我们的自动化代码完成之后,通常期望可以在不同的环境进行测试,此时可以将项目系统的URL单独拿出来,并且可以通过pytest.ini配置文件和支持pytest命令行方式执行。 ② pytest-base-url 是一个简单的pytest插件,它通过命令行或配置文件提供可选的基本 URL。 ③ 阅读全文
摘要:
前言 由于我们在编写测试用例的过程中,可能会调试某些某些测试方法以达到我们的目的;例如调试token是否通过fixture函数写入配置文件达到token持久化存储的目的。 可能出现的问题: ①在合并代码的时候,由于我们的疏忽可能会导致将这些调试脚本也一并上传至git远程代码仓,导致git仓库出现与项 阅读全文
摘要:
前言 1、pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F);等待用例全部运行完成后最后把报错信息全部一起抛出到控制台。 2、这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实时查看报错信息。 3、 pytest-instafail 插件可以在运行用例的时候,可以实 阅读全文
摘要:
pytest之多进程运行测试用例(pytest-xdist) 前言 平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完 当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间缩短一半,如果有10个小伙伴,那么执行 阅读全文
摘要:
环境前提: 只有同时满足一下先决条件才能使用pytest-rerunfailures ①python的版本不能过低; ②pytest 5.0或更高版本; 背景: 平时在做接口测试的时候,经常会遇到网络抖动或者环境问题导致测试用例运行失败,而这个并不是我们想要的结果; 我们想要重新运行失败的测试用例, 阅读全文
摘要:
前言 我们平时在做测试的时候经常会遇到网络抖动,导致测试用例执行失败,重新执行后用例又执行成功了;有时候还会遇到功能不稳定,偶尔会出现bug,我们经常需要反复多次的运行用例,从而来复现问题。pytest-repeat插件就可以实现重复运行测试用例的功能。 pytest-repeat安装 pip in 阅读全文
摘要:
前言 pytest使用assert来做断言,但是assert断言是一旦遇到断言失败的测试用例后,后面的代码就不会再执行了。 但有的时候我们经常会在用例中写多个断言,并且希望在第一个断言失败后,后面的所有的断言都能继续执行完,这就需要用到 pytest-assume 插件来解决。 背景 使用pytes 阅读全文
摘要:
前言 设计测试用例有时候需要自定义测试用例的执行顺序,我们使用pytest的插件 pytest-ordering 来控制测试用例的执行顺序。 【 pytest_ordering 插件,但是只能针对某一个 test 文件的多条用例有效,对多个 test 文件不起作用】 下载 pip install p 阅读全文
摘要:
安装 pip install pytest-emoji 使用方法 pytest -vs --emoji 示例 执行测试用例的时候,就会在每条用例执行结果的后面添加一个萌萌哒的表情。 重写表情 当然如果不喜欢这类的表情,也可以直接在conftest.py模块中进行重写: # 重写pytest-emoj 阅读全文
摘要:
前言 ①在我们做接口自动化的时候,很经常会有一个指标是找出一些耗时的接口,从而告知开发这些接口需要优化。 ②由于某些测试用例步骤长,执行时间比较久,为了防止程序长时间处于等待状态,浪费宝贵时间。为此,我们可以设置一个超时时间,当测试在指定的时间长度内没有完成(即使程序并没有“僵死”,只是处理得比较慢 阅读全文
摘要:
前言 在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。 安装 pip3 install pytest-sugar 实例 def test_s1(): pr 阅读全文
摘要:
前言 当我们使用allure生成测试报告之后,我们再修改测试用例,然后再次运行生成测试报告会发现测试报告中保留了上一次用例的运行记录。【默认allure测试报告不会清理之前的原始数据;而原来的原始数据会在最新的allure测试报告中显示历史用例执行结果】 如果我们不想看到原来的用例执行记录,而是生成 阅读全文