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 ...
随机推荐
- 微擎模块的安装文件manifest.xml
微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本. manifest.xml文件内容详细介绍如下: manifest - ...
- phpstorm 代码注释后,撤销某段代码的注释的,快捷键是什么?
phpstorm 的代码注释有两种风格,一种是双斜杠,另一种是 /* ... */风格,两者的快捷键都是开关式(即按第一次为注释,再按一次为撤销注释),快捷键如下: 1.双斜杠注释 Ctrl + ...
- v-if与v-show的使用
vue中的v-if与v-show 区别:v-if='false'的会直接在html里删掉,浏览器中看html的结构不会有 v-show='false'只是样式为overflow:hidden; 所以很 ...
- 第十一课 CSS介绍与font字体 css学习1
一.CSS样式规则 1.基本结构 <html> <head> <style> h1{ color: orange; } </style> </he ...
- linux如何批量关闭进程
碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择. 代码: ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 ...
- openwrt 里LUA程序怎么获取POST数据?
https://www.zhihu.com/question/31579325 作者:齐葛链接:https://www.zhihu.com/question/31579325/answer/28342 ...
- Redis5.0.4复制
redis的复制很简单,由于资源限制,本例中采用两台虚拟机,每台虚拟机安装两个redis实例,共四个来测试 一.安装redis https://www.cnblogs.com/qq931399960/ ...
- Photoshop打造唯美的蓝色古装外景人物图片
<点小图查看大图> 最终效果 1.打开原图素材大图,按Ctrl + J 把背景图层复制一层,用模糊工具把红圈区域背景模糊处理. <图1> 2.创建可选颜色调整图层,对黄色,绿色 ...
- 用eclipce编写 MR程序 MapReduce
package com.bw.mr; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.a ...
- 注意:QQ影音视频压缩时长丢失
客户宣传片发来,高清的,比较大,500多M,需要转成小一点的,放在客户网站上,于是用QQ影音转码压缩下,变成低质量的.如下 一切都很顺利,提示进度100%! 这一切都是电脑自动的,又是提示成功的,千想 ...