标记失败用到的情况是,本身就知道这是失败的例子,所以,不用让他运行,直接跳过。或者是依赖于某个方法,某个方式失败的话,用例直接标记成失败。

标记失败有两种方法,一种是方法内部,一种是方法外部。内部用pytest.xfail(""),外部用装饰@pytest.mark.xfail(condition=None*reason=Noneraises=Nonerun=Truestrict=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的更多相关文章

  1. pytest 13 使用自定义标记mark

    前言: pytest可以规定那些要跑,那些不跑,跑特定的哪些?比如以下的这个例子: #!/usr/bin/env/python # -*-coding:utf-8-*- import pytest @ ...

  2. pytest九:使用自定义标记 mark

    pytest 可以支持自定义标记,自定义标记可以把一个 web 项目划分多个模块,然后指定模块名称执行.app 自动化的时候,如果想android 和 ios 公用一套代码时,也可以使用标记功能,标明 ...

  3. pytest文档15-使用自定义标记mark

    前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时, 也可以使用标记功能,标明哪些是 ...

  4. Pytest系列(8) - 使用自定义标记mark

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest 可以支持自定义 ...

  5. pytest_使用自定义标记mark

    前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是i ...

  6. 自定义标记mark

    前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是i ...

  7. Pytest使用自定义标记mark只执行部分用例

    • 场景:只执行符合要求的某一部分用例 可以把一个web项目划分多个模块,然后指定模块名称执行. App自动化时,如果想Android和IOS公用一套代码时,也可以使用标记功能,标明哪些是IOS 的用 ...

  8. Pytest系列(八) - 自定义标记mark的使用

    一.前言: pytest 支持自定义标记,自定义标记方便用例模块划分,也可以理解方便管理,配合标记参数 -m使用 二.示例代码 # -*- coding: utf-8 -*- # @Time : 20 ...

  9. Pytest学习笔记6-自定义标记mark

    前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mar ...

随机推荐

  1. 第十三课 CSS外观及样式的应用 css学习3

    一.1.color: 文本颜色 预定义文本颜色值,如red,blue等 十六进制的颜色值 #fff白色 建议常用的表示方法 RGB代码,如红色可以表示为rgb(255,0,0)或rgb(100%,%0 ...

  2. 前端入门23-CSS预处理器(Less&Sass)

    声明 本篇内容梳理自以下几个来源: Github:smyhvae/web Bootstrap网站的 less 文档 Sass中文网 感谢大佬们的分享. 正文-CSS预处理(less&Sass) ...

  3. AsyncTask机制

    AsyncTask可以让我们更容易地使用UI线程.它允许执行后台操作,并把结果发布到UI线程上,而不需要操作线程或Handler.AsyncTask被设计成一个和Thread.Handler相关的一个 ...

  4. 使用GDB调试Android Native 层代码

    --------------步骤:0. adb root0. adb shell0. ps | grep browser1. gdbserver :5039 --attach pid2. adb fo ...

  5. [Python] wxPython 高防Windows10记事本 (end...)

    1.开始 接触Python 也有一段时间了,o.o ,断断续续加起来没几天. 一般新学习一门新语言,除了必先输出一个 Hello World 外,都会以模拟 Windows 记事本来写一个结合自己想法 ...

  6. Golang学习:sublime text3配置golang环境

    最近导师让学习golang, 然后我就找了些有关golang的学习视频和网站. 昨天在电脑上下载了go tools, 之后在sublime上配置了golang的运行环境.By the way, 我的电 ...

  7. ubuntu如何安装chromium浏览器并设置成中文版

    在Ubuntu上使用APT安装Chromium有3种方法: 1.在Ubuntu软件中心输入chromium,然后在结果中选择安装即可. 2.在新立得软件包管理器中输入chromium,然后标记安装即可 ...

  8. Vue (三) --- Vue 组件开发

    ------------------------------------------------------------------好心情,会让你峰回路转. 5. 组件化开发 5.1 组件[compo ...

  9. keepalived的主从备份服务器

    一.环境说明 1.操作系统内核版本:linux 6.0 2.Keepalived软件版本:keepalived-1.1.20.tar.gz 二.环境配置 1.主Keepalived服务器IP地址 19 ...

  10. 如何改善SSH连接过慢(效率)

    +++++++++++++++++++++++++++++++++++++++++问题:通过SSH链接远程Linux主机过慢.重点:学习如何通过调整ssh_config配置文件,提高SSH连接效率.时 ...