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

标记失败有两种方法,一种是方法内部,一种是方法外部。内部用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. 《JavaScript高级程序设计》笔记:DOM扩展(十一)

    选择符API querySelector()方法 // 取得body元素 var tbody = document.querySelector('body'); // 取得ID为"myDIV ...

  2. react异步加载组件

    1. 创建 asyncComponent 异步加载工具 import React from 'react' function asyncComponent(loadComponent){ class ...

  3. 利用AccessibilityService自动获取微信号(Android)

    前言: 最近遇到一个需求,要求写一个小插件,能够自动在微信的页面弹出一个窗口,展示用户的相关信息(与我们公司有关的信息,方便运营快速了解用户信息). 当时我第一反应是不可能,如果能够在别的app中获取 ...

  4. 安卓投屏助手(B1358)之辅助调试

    Android远程桌面助手的中文版——安卓投屏助手正式上线.安卓投屏和远程控制的软件其实已经非常多了,如Vysor.Total Control.Mobizen.ApowerMirror.TeamVie ...

  5. UDK Stat命令

    Stat命令(chs  en)提供了游戏和引擎各个方面的实时统计信息,输入不同参数会在屏幕HUD上显示对应统计数据. 非Shipping版的UDK才会启用STATS宏,统计逻辑才会编译进exe,才能使 ...

  6. c# 创建excel表头及内容

    主要通过ajax调用函数Getinfo 1.定义表dh DataTable dh = new DataTable(); 2.创建表头 public void CreateCol(string Colu ...

  7. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                     优点:输入一行代码立刻返回结果                      缺点:无法永久保存代码 方法二: ...

  8. jquery中Json操作

    在开发中,我们有可能拿到的不是全的json,而是一部分json格式的数据,这个时候我们需要将其强转为json对象 第一种方法:使用jquery中的$.parseJSON(),但是它对json数据格式的 ...

  9. 【数据库】+ powerdesigner

    使用powerdesigner工具对现有数据库表 生成关系图:https://www.cnblogs.com/lusunqing/p/4128025.html 通过Excel生成PowerDesign ...

  10. RabbitMQ使用时注意的一些问题

     一.前言       上篇RabbitMQ的博文居然上了推荐,效果很不错,接下来我们就来聊聊我们RabbitMQ的方案,先谈方案,代码等等后面补上,感觉不错给我点点关注,点点