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

标记失败有两种方法,一种是方法内部,一种是方法外部。内部用pytest.xfail(""),外部用装饰@pytest.mark.xfail(condition=None*reason=Noneraises=Nonerun=Truestrict=False)

具体看以下的两个例子:

  1. #!/usr/bin/env/python
  2. # -*-coding:utf-8-*-
  3. import pytest
  4.  
  5. parameter = [{"user":"admin","password":""}]
  6.  
  7. @pytest.mark.xfail(reason="no run")
  8. def test_mark():
  9. pass
  10.  
  11. @pytest.fixture(scope="module")
  12. def login(request):
  13. user = request.param["user"]
  14. password = request.param["password"]
  15. print("正在操作登录,账号:%s, 密码:%s" % (user, password))
  16. if password:
  17. return True
  18. else:
  19. return False
  20.  
  21. @pytest.mark.parametrize("login",parameter,indirect=True)
  22. class Test_xfail():
  23.  
  24. def test_01(self,login):
  25. """用例1登录"""
  26. result = login
  27. print("用例1:%s" % result)
  28. assert result == True
  29.  
  30. def test_02(self, login):
  31. result = login
  32. print("用例2,登录结果:%s" % result)
  33. if not result:
  34. pytest.xfail("登录不成功, 标记为xfail")
  35.  
  36. assert 1 == 1
  37.  
  38. def test_03(self, login):
  39. result = login
  40. print("用例3,登录结果:%s" % result)
  41. if not result:
  42. pytest.xfail("登录不成功, 标记为xfail")
  43.  
  44. assert 1 == 1

运行结果:显示一个跳过,3个通过

  1. ============================= test session starts ==============================
  2. platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
  3. rootdir: /Users/newcomer/gitByMyself, inifile:
  4. plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 4 items
  5.  
  6. python_work_apple/pytest_package/mark/test_xfail.py X正在操作登录,账号:admin, 密码:123456
  7. .用例1True
  8. .用例2,登录结果:True
  9. .用例3,登录结果:True
  10. [100%]
  11.  
  12. ===================== 3 passed, 1 xpassed in 0.03 seconds ======================

下面的一个,让密码为空

  1. #!/usr/bin/env/python
  2. # -*-coding:utf-8-*-
  3. import pytest
  4.  
  5. parameter = [{"user":"admin","password":""}]
  6.  
  7. @pytest.mark.xfail(reason="no run")
  8. def test_mark():
  9. pass
  10.  
  11. @pytest.fixture(scope="module")
  12. def login(request):
  13. user = request.param["user"]
  14. password = request.param["password"]
  15. print("正在操作登录,账号:%s, 密码:%s" % (user, password))
  16. if password:
  17. return True
  18. else:
  19. return False
  20.  
  21. @pytest.mark.parametrize("login",parameter,indirect=True)
  22. class Test_xfail():
  23.  
  24. def test_01(self,login):
  25. """用例1登录"""
  26. result = login
  27. print("用例1:%s" % result)
  28. assert result == True
  29.  
  30. def test_02(self, login):
  31. result = login
  32. print("用例2,登录结果:%s" % result)
  33. if not result:
  34. pytest.xfail("登录不成功, 标记为xfail")
  35.  
  36. assert 1 == 1
  37.  
  38. def test_03(self, login):
  39. result = login
  40. print("用例3,登录结果:%s" % result)
  41. if not result:
  42. pytest.xfail("登录不成功, 标记为xfail")
  43.  
  44. assert 1 == 1

运行结果:显示一个失败,一个跳过(xpass),用例2和3没执行,直接标记为xfail了

  1. ============================= test session starts ==============================
  2. platform darwin -- Python 3.7.0, pytest-3.9.1, py-1.7.0, pluggy-0.8.0
  3. rootdir: /Users/newcomer/gitByMyself, inifile:
  4. plugins: datadir-1.2.1, allure-adaptor-1.7.10collected 4 items
  5.  
  6. python_work_apple/pytest_package/mark/test_xfail.py X正在操作登录,账号:admin, 密码:
  7. F用例1False
  8.  
  9. python_work_apple/pytest_package/mark/test_xfail.py:24 (Test_xfail.test_01[login0])
  10. True != False
  11.  
  12. Expected :False
  13. Actual :True
  14. <Click to see difference>
  15.  
  16. self = <test_xfail.Test_xfail object at 0x10b5f9e80>, login = False
  17.  
  18. def test_01(self,login):
  19. """用例1登录"""
  20. result = login
  21. print("用例1:%s" % result)
  22. > assert result == True
  23. E assert False == True
  24.  
  25. python_work_apple/pytest_package/mark/test_xfail.py:29: AssertionError
  26. x用例2,登录结果:False
  27.  
  28. self = <test_xfail.Test_xfail object at 0x10be03dd8>, login = False
  29.  
  30. def test_02(self, login):
  31. result = login
  32. print("用例2,登录结果:%s" % result)
  33. if not result:
  34. > pytest.xfail("登录不成功, 标记为xfail")
  35. E _pytest.outcomes.XFailed: 登录不成功, 标记为xfail
  36.  
  37. python_work_apple/pytest_package/mark/test_xfail.py:35: XFailed
  38. x用例3,登录结果:False
  39.  
  40. self = <test_xfail.Test_xfail object at 0x10bdfbbe0>, login = False
  41.  
  42. def test_03(self, login):
  43. result = login
  44. print("用例3,登录结果:%s" % result)
  45. if not result:
  46. > pytest.xfail("登录不成功, 标记为xfail")
  47. E _pytest.outcomes.XFailed: 登录不成功, 标记为xfail
  48.  
  49. python_work_apple/pytest_package/mark/test_xfail.py:43: XFailed
  50. [100%]
  51.  
  52. =================================== FAILURES ===================================
  53. __________________________ Test_xfail.test_01[login0] __________________________
  54.  
  55. self = <test_xfail.Test_xfail object at 0x10b5f9e80>, login = False
  56.  
  57. def test_01(self,login):
  58. """用例1登录"""
  59. result = login
  60. print("用例1:%s" % result)
  61. > assert result == True
  62. E assert False == True
  63.  
  64. python_work_apple/pytest_package/mark/test_xfail.py:29: AssertionError
  65. ---------------------------- Captured stdout setup -----------------------------
  66. 正在操作登录,账号:admin, 密码:
  67. ----------------------------- Captured stdout call -----------------------------
  68. 用例1False
  69. ================ 1 failed, 2 xfailed, 1 xpassed in 0.11 seconds ================
  70. 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. HashTable、ConcurrentHashMap、TreeMap、HashMap关于键值的区别

    集合类 key value super 说明 HashTable 不能为null 不能为null Dictionary 线程安全 ConcurrentHashMap 不能为null 不能为null A ...

  2. SlidingMenu的使用详解

    前言- 最近自己在做一个Android的程序,需要用到一个侧滑的菜单,发现了SlidingMenu这个开源项目.简单实用,但是实战的时候遇到了许多小问题,今天来记录一下. SlidingMenu的使用 ...

  3. 随笔:关于去年的WordPress建站的回忆

    2018-02-26    建站 2018-02-28    选择主题Clearision 2018-03-01    学习插入视频.修改主题 <iframe src="//playe ...

  4. 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展

    导读:技术人员的常态是“左手支持业务签单,右手提升系统性能”,却经常陷入技术和业务该如何平衡发展的困惑?今天,且听一位硅谷牛人分享他的平衡之道. 以个人名誉申请31个国内外技术和产品专利,中国最佳CT ...

  5. Delphi 拦截输入法输入结果

    { 拦截输入法输入的字符串.向编辑框中输入中文查看效果. Delphi XE7 } unit Unit1; interface uses Winapi.Windows, Winapi.Messages ...

  6. 迁移FRS至DFSR SYSVOL

    截至2017年6月20日,Windows 2016 RS1系统为最后一版支持FRS,后续版本将不再包含该功能,详细见 https://support.microsoft.com/en-us/help/ ...

  7. Flink应用案例:How Trackunit leverages Flink to process real-time data from industrial IoT devices

    January 22, 2019Use Cases, Apache Flink Lasse Nedergaard     Recently there has been significant dis ...

  8. kafka消息会不会丢失

    转载:https://baijiahao.baidu.com/s?id=1583469327946027281&wfr=spider&for=pc 消息发送方式 想清楚Kafka发送的 ...

  9. RAC Wait Event: gcs log flush sync 等待事件 转

    RAC Wait Event: gcs log flush sync https://www.hhutzler.de/blog/rac-wait-event_gcs_log_flush_sync/#o ...

  10. AI移动自动化测试框架设计(解读)

    声明:原文出自"前端之巅"微信公众号"爱奇艺基于AI的移动端自动化测试框架的设计"一文,作者:何梁伟,爱奇艺Android架构师.文章提供了一种基于AI算法的自 ...