pytest 14 使用自定义标记mark
标记失败用到的情况是,本身就知道这是失败的例子,所以,不用让他运行,直接跳过。或者是依赖于某个方法,某个方式失败的话,用例直接标记成失败。
标记失败有两种方法,一种是方法内部,一种是方法外部。内部用pytest.xfail(""),外部用装饰@pytest.mark.xfail(condition=None, *, reason=None, raises=None, run=True, strict=False)
具体看以下的两个例子:
#!/usr/bin/env/python
# -*-coding:utf-8-*-
import pytest parameter = [{"user":"admin","password":""}] @pytest.mark.xfail(reason="no run")
def test_mark():
pass @pytest.fixture(scope="module")
def login(request):
user = request.param["user"]
password = request.param["password"]
print("正在操作登录,账号:%s, 密码:%s" % (user, password))
if password:
return True
else:
return False @pytest.mark.parametrize("login",parameter,indirect=True)
class Test_xfail(): def test_01(self,login):
"""用例1登录"""
result = login
print("用例1:%s" % result)
assert result == True def test_02(self, login):
result = login
print("用例2,登录结果:%s" % result)
if not result:
pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1 def test_03(self, login):
result = login
print("用例3,登录结果:%s" % result)
if not result:
pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1
运行结果:显示一个跳过,3个通过
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
rootdir: /Users/newcomer/gitByMyself, inifile:
plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 4 items python_work_apple/pytest_package/mark/test_xfail.py X正在操作登录,账号:admin, 密码:123456
.用例1:True
.用例2,登录结果:True
.用例3,登录结果:True
[100%] ===================== 3 passed, 1 xpassed in 0.03 seconds ======================
下面的一个,让密码为空
#!/usr/bin/env/python
# -*-coding:utf-8-*-
import pytest parameter = [{"user":"admin","password":""}] @pytest.mark.xfail(reason="no run")
def test_mark():
pass @pytest.fixture(scope="module")
def login(request):
user = request.param["user"]
password = request.param["password"]
print("正在操作登录,账号:%s, 密码:%s" % (user, password))
if password:
return True
else:
return False @pytest.mark.parametrize("login",parameter,indirect=True)
class Test_xfail(): def test_01(self,login):
"""用例1登录"""
result = login
print("用例1:%s" % result)
assert result == True def test_02(self, login):
result = login
print("用例2,登录结果:%s" % result)
if not result:
pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1 def test_03(self, login):
result = login
print("用例3,登录结果:%s" % result)
if not result:
pytest.xfail("登录不成功, 标记为xfail") assert 1 == 1
运行结果:显示一个失败,一个跳过(xpass),用例2和3没执行,直接标记为xfail了
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
rootdir: /Users/newcomer/gitByMyself, inifile:
plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 4 items python_work_apple/pytest_package/mark/test_xfail.py X正在操作登录,账号:admin, 密码:
F用例1:False python_work_apple/pytest_package/mark/test_xfail.py:24 (Test_xfail.test_01[login0])
True != False Expected :False
Actual :True
<Click to see difference> self = <test_xfail.Test_xfail object at 0x10b5f9e80>, login = False def test_01(self,login):
"""用例1登录"""
result = login
print("用例1:%s" % result)
> assert result == True
E assert False == True python_work_apple/pytest_package/mark/test_xfail.py:29: AssertionError
x用例2,登录结果:False self = <test_xfail.Test_xfail object at 0x10be03dd8>, login = False def test_02(self, login):
result = login
print("用例2,登录结果:%s" % result)
if not result:
> pytest.xfail("登录不成功, 标记为xfail")
E _pytest.outcomes.XFailed: 登录不成功, 标记为xfail python_work_apple/pytest_package/mark/test_xfail.py:35: XFailed
x用例3,登录结果:False self = <test_xfail.Test_xfail object at 0x10bdfbbe0>, login = False def test_03(self, login):
result = login
print("用例3,登录结果:%s" % result)
if not result:
> pytest.xfail("登录不成功, 标记为xfail")
E _pytest.outcomes.XFailed: 登录不成功, 标记为xfail python_work_apple/pytest_package/mark/test_xfail.py:43: XFailed
[100%] =================================== FAILURES ===================================
__________________________ Test_xfail.test_01[login0] __________________________ self = <test_xfail.Test_xfail object at 0x10b5f9e80>, login = False def test_01(self,login):
"""用例1登录"""
result = login
print("用例1:%s" % result)
> assert result == True
E assert False == True python_work_apple/pytest_package/mark/test_xfail.py:29: AssertionError
---------------------------- Captured stdout setup -----------------------------
正在操作登录,账号:admin, 密码:
----------------------------- Captured stdout call -----------------------------
用例1:False
================ 1 failed, 2 xfailed, 1 xpassed in 0.11 seconds ================
Process finished with exit code 0
pytest 14 使用自定义标记mark的更多相关文章
- pytest 13 使用自定义标记mark
前言: pytest可以规定那些要跑,那些不跑,跑特定的哪些?比如以下的这个例子: #!/usr/bin/env/python # -*-coding:utf-8-*- import pytest @ ...
- pytest九:使用自定义标记 mark
pytest 可以支持自定义标记,自定义标记可以把一个 web 项目划分多个模块,然后指定模块名称执行.app 自动化的时候,如果想android 和 ios 公用一套代码时,也可以使用标记功能,标明 ...
- pytest文档15-使用自定义标记mark
前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时, 也可以使用标记功能,标明哪些是 ...
- Pytest系列(8) - 使用自定义标记mark
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest 可以支持自定义 ...
- pytest_使用自定义标记mark
前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是i ...
- 自定义标记mark
前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是i ...
- Pytest使用自定义标记mark只执行部分用例
• 场景:只执行符合要求的某一部分用例 可以把一个web项目划分多个模块,然后指定模块名称执行. App自动化时,如果想Android和IOS公用一套代码时,也可以使用标记功能,标明哪些是IOS 的用 ...
- Pytest系列(八) - 自定义标记mark的使用
一.前言: pytest 支持自定义标记,自定义标记方便用例模块划分,也可以理解方便管理,配合标记参数 -m使用 二.示例代码 # -*- coding: utf-8 -*- # @Time : 20 ...
- Pytest学习笔记6-自定义标记mark
前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mar ...
随机推荐
- linux下mysql区分大小写的内容
1.数据库名严格区分大小写2.表名严格区分大小写的3.表的别名严格区分大小写4.变量名严格区分大小写5.列名在所有的情况下均忽略大小写6.列的别名在所有的情况下均忽略大小写
- Oracle dblink的连接模式的关系测试总结
这篇主要介绍一下database link由于连接数据库的方式不同遇到的一些问题,我们知道连接ORACLE服务器的模式一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接 ...
- Delphi中使用ISuperObject解析Json数据
Java.Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即Isuper ...
- VS2017内存占用高
我的环境和硬件参数 说明:本篇所提到的方法在我的机器上经过设置是能明显改善卡顿的,但可能你的VS卡顿的原因不一定是本文所提到的,可以通过排除法找到问题所在. 我的环境和硬件参数: vs 2017 pr ...
- OSXFUSE file system is not available 解决方法
操作系统版本:10.14 macos mojeva 今天用truecrypt加载加密盘时候提示次错误:用window加载也有错误,不过用windows自带的工具检查修复了错误. 解决办法: 1.访问h ...
- Python学习案例之视频人脸检测识别
前言 上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统.人脸动态跟踪识别系统等等. 案例 这里我们还是使用 opencv 中 ...
- 随心测试_数据库_002 <数据库系统组成>
软测工程师:作为综合运用多学科知识,保障软件质量的重要岗位.需要我们学以致用,在工作中不断学习提升.以下:软测人员必备_数据库核心技能学习点,供大家学习参考. 数据库系统组成_必备 1. 简介:数据库 ...
- Java BigDecimal类型的 加减乘除运算
原文: https://blog.csdn.net/xuwei_net/article/details/81253471 加法:add 减法:subtract 乘法:multiply 除法:divid ...
- Android布局理解
参考菜鸟教程,原文请查看:https://www.runoob.com/w3cnote/android-tutorial-linearlayout.html 1.FrameLayout(帧布局) 帧布 ...
- Springboot集成Redis步骤
Spring boot 集成Redis的步骤如下: 1.在pom.xml中配置相关的jar依赖: <!--加载spring boot redis包 --> <dependency&g ...