pytest

py.test - how to use a context manager in a funcarg/fixture

一曲冷凌霜 提交于 2020-02-03 04:26:09
问题 Closely related: In python, is there a good idiom for using context managers in setup/teardown I have a context manager that is used in tests to fix the time/timezone. I want to have it in a pytest funcarg (or fixture, we are using pytest 2.2.3 but I can translate backwards). I could just do this: def pytest_funcarg__fixedTimezone(request): # fix timezone to match Qld, no DST to worry about and matches all # Eastern states in winter. fixedTime = offsetTime.DisplacedRealTime(tz=' Australia

坑:pytest 运行报错unknown hook 'pytest_namespace' in plugin <module 'allure.pytest_plugin'

早过忘川 提交于 2020-02-03 03:03:05
右键运行pytest run时报错,原因是pytest版本过高导致的。有时候会遇到在自己本机没问题,拉取服务器代码下来后就出问题了,所以把pytest版本改低就可以,亲测有效,希望对你有帮助 完整报错信息如下: plugins: allure-adaptor-1.7.10, forked-1.0.2, html-1.20.0, metadata-1.8.0, xdist-1.29.0 collected 17 items / 1 errors / 16 selected INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\_pytest\main.py", line 213, in wrap_ session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> File "C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\_pytest\main.py", line

fixture详细介绍-作为参数传入,error和failed区别

扶醉桌前 提交于 2020-02-03 03:02:31
前言 fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手! fixture简介 fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进: 有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。 按模块化的方式实现,每个fixture都可以互相调用。 fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数 function、类class、模块module或整个测试会话sessio范围。 fixture作为参数传入 定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。 fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量名称,如下案例 # test_fixture1.py import pytest @pytest.fixture() def user(): print("获取用户名") a =

2.pytest用例设计及运行

北慕城南 提交于 2020-02-02 13:56:50
pytest测试用例可以存在函数级别,也可以存在类级别。只需要按照内部的规则设计用例,它可以自动去发现测试用例,不需要像unittest框架测试类需要继承TestCase; 在运行时可以在命令行窗口运行,也可以在pycharm中直接运行,下面会详解两种运行方式; 1.pytest用例设计规则 所有的测试脚本存放在python的包中。python的包中带有__init__.py文件 模块名设计规则:test_*.py 或者 *_test.py 类名设计规则: Test* 以Test开头的类 方法名设计规则:test_* 以test_开头的方法名 函数名设计规则:test_* 以test_开头的函数 2.脚本命令行运行3中方式   pytest(推荐使用)  py.test  python -m pytest 3.执行脚本时参数   -s 详细显示日志信息   -q 显示简略运行信息   -x 遇到第一个失败用例停止运行   --maxfile=2 遇到第二个失败用例停止运行,可以改变停止运行的失败用例数 4.pycharm中运性用例 确定是否是pytest运行器运行 更改运行器:file-->setings 用例运行顺序 1.如果鼠标悬停在其中一个用例右键运行,则只会运行悬停处用例; 2.如果鼠标没有悬停则顺序为先运行函数级别用例,在运行类级别用例;

Testing logging output with pytest

余生颓废 提交于 2020-02-01 03:14:05
问题 I am trying to write a test, using pytest, that would check that a specific function is writing out a warning to the log when needed. For example: In module.py: import logging LOGGER = logging.getLogger(__name__) def run_function(): if something_bad_happens: LOGGER.warning('Something bad happened!') In test_module.py: import logging from module import run_function LOGGER = logging.getLogger(__name__) def test_func(): LOGGER.info('Testing now.') run_function() ~ somehow get the stdout/log of

10、pytest -- skip和xfail标记

浪子不回头ぞ 提交于 2020-01-29 06:25:39
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip 装饰器 1.2. pytest.skip 方法 1.3. @pytest.mark.skipif 装饰器 1.4. pytest.importorskip 方法 1.5. 跳过测试类 1.6. 跳过测试模块 1.7. 跳过指定文件或目录 1.8. 总结 2. 标记用例为预期失败的 2.1. 去使能 xfail 标记 3. 结合 pytest.param 方法 往期索引: https://www.cnblogs.com/luizyao/p/11771740.html 实际工作中,测试用例的执行可能会依赖于一些外部条件,例如:只能运行在某个特定的操作系统( Windows ),或者我们本身期望它们测试失败,例如:被某个已知的 Bug 所阻塞;如果我们能为这些用例提前打上标记,那么 pytest 就相应地预处理它们,并提供一个更加准确的测试报告; 在这种场景下,常用的标记有: skip :只有当某些条件得到满足时,才执行测试用例,否则跳过整个测试用例的执行;例如,在非 Windows 平台上跳过只支持 Windows 系统的用例; xfail :因为一个确切的原因,我们知道这个用例会失败;例如,对某个未实现的功能的测试,或者阻塞于某个已知 Bug 的测试; pytest 默认不显示 skip 和 xfail

10、pytest -- skip和xfail标记

喜欢而已 提交于 2020-01-28 13:13:13
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip 装饰器 1.2. pytest.skip 方法 1.3. @pytest.mark.skipif 装饰器 1.4. pytest.importorskip 方法 1.5. 跳过测试类 1.6. 跳过测试模块 1.7. 跳过指定文件或目录 1.8. 总结 2. 标记用例为预期失败的 2.1. 去使能 xfail 标记 3. 结合 pytest.param 方法 往期索引: https://www.cnblogs.com/luizyao/p/11771740.html 实际工作中,测试用例的执行可能会依赖于一些外部条件,例如:只能运行在某个特定的操作系统( Windows ),或者我们本身期望它们测试失败,例如:被某个已知的 Bug 所阻塞;如果我们能为这些用例提前打上标记,那么 pytest 就相应地预处理它们,并提供一个更加准确的测试报告; 在这种场景下,常用的标记有: skip :只有当某些条件得到满足时,才执行测试用例,否则跳过整个测试用例的执行;例如,在非 Windows 平台上跳过只支持 Windows 系统的用例; xfail :因为一个确切的原因,我们知道这个用例会失败;例如,对某个未实现的功能的测试,或者阻塞于某个已知 Bug 的测试; pytest 默认不显示 skip 和 xfail

pytest_按标记执行

白昼怎懂夜的黑 提交于 2020-01-28 00:31:43
import pytest@pytest.mark.webtestdef test_send_http(): pass@pytest.mark.apptestdef test_devide(): pass@pytest.mark.androiddef test_search(): pass@pytest.mark.iosdef test_add(): passdef test_plus(): pass-m 是标记-s 显示内部打印信息 pytest -s test_mark.py -m 'not ios' 执行标记不等于ios的 pytest -s test_mark.py -m ios 只执行标记==ios的 pytest -s test_mark.py -m=ios 只执行标记==ios的 来源: https://www.cnblogs.com/QaStudy/p/11563931.html

调试pymssql程序时出错问题

耗尽温柔 提交于 2020-01-27 02:27:04
问题收集 1、 python处理mssql,varchar类型中文读取乱码问题 nvarchar类型对中文字段可以正常解码显示,但是varchar类型中文读取异常。所以字段设计最好用nvarchar类型存储中文,对于已经存在的问题,可以有两种解决方式: 1.修改表中字段对类型,将varchar改为nvarchar 2.采用手动编码解码方式可以解决乱码问题,data.encode('latin-1').decode('gbk') 2、在python3.8中,安装pymssql 2.1.4 import pymssql 运行程序时出错,报的错误是: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working 是由于 python版本更新导致的 错误 警告可以忽略 查了下pytest的官方接口文档 要在pytest.ini的文件下填写该内容: [pytest] addopts = -p no:warnings 忽视所有的警告 然后 通过了,但提示信息还是在最后会出现! 来源: CSDN 作者: 潭市_涟水河畔 链接:

【专项】【页面加载时间】uiautomator2+opencv-python基于图片识别算法实现自动化统计页面加载时间DEMO

半城伤御伤魂 提交于 2020-01-26 08:44:38
uiautomator2+opencv-python基于图片识别算法实现自动化统计页面加载时间DEMO: 一、实践要点记录 1.uiautomator2实现UI操作 2.opencv-python基于图片识别算法,机器判断图片加载完成 3.过程: #点击页面入口时开始记录时间start_time # 边加载页面边截图 # 定义一个标准,哈希值范围是0-64,哈希值越小,图片越相似 # 当加载完成的页面和预期页面相似度高(python opencv 图片相似度 的算法),如哈希算法,当哈希值小于某个值,判断为加载完成 # 记录此时的时间点end_time # 终止截图、图片对比循环过程 # 计算时间差,即页面加载时间=end_time-start_time 4.代码实现: #encoding utf-8 import uiautomator2 as u2 from time import sleep from uiautomator2.ext.htmlreport import HTMLReport import pytest import allure import os from Tools import logger#自己封装的logger from Tools import compimgs_similar#封装了python opencv 图片相似度 的算法 import