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 ...
随机推荐
- HashTable、ConcurrentHashMap、TreeMap、HashMap关于键值的区别
集合类 key value super 说明 HashTable 不能为null 不能为null Dictionary 线程安全 ConcurrentHashMap 不能为null 不能为null A ...
- SlidingMenu的使用详解
前言- 最近自己在做一个Android的程序,需要用到一个侧滑的菜单,发现了SlidingMenu这个开源项目.简单实用,但是实战的时候遇到了许多小问题,今天来记录一下. SlidingMenu的使用 ...
- 随笔:关于去年的WordPress建站的回忆
2018-02-26 建站 2018-02-28 选择主题Clearision 2018-03-01 学习插入视频.修改主题 <iframe src="//playe ...
- 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展
导读:技术人员的常态是“左手支持业务签单,右手提升系统性能”,却经常陷入技术和业务该如何平衡发展的困惑?今天,且听一位硅谷牛人分享他的平衡之道. 以个人名誉申请31个国内外技术和产品专利,中国最佳CT ...
- Delphi 拦截输入法输入结果
{ 拦截输入法输入的字符串.向编辑框中输入中文查看效果. Delphi XE7 } unit Unit1; interface uses Winapi.Windows, Winapi.Messages ...
- 迁移FRS至DFSR SYSVOL
截至2017年6月20日,Windows 2016 RS1系统为最后一版支持FRS,后续版本将不再包含该功能,详细见 https://support.microsoft.com/en-us/help/ ...
- 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 ...
- kafka消息会不会丢失
转载:https://baijiahao.baidu.com/s?id=1583469327946027281&wfr=spider&for=pc 消息发送方式 想清楚Kafka发送的 ...
- 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 ...
- AI移动自动化测试框架设计(解读)
声明:原文出自"前端之巅"微信公众号"爱奇艺基于AI的移动端自动化测试框架的设计"一文,作者:何梁伟,爱奇艺Android架构师.文章提供了一种基于AI算法的自 ...