pytest--运行指定的测试和参数化
mark
pytest提供了标记机制,允许你使用marker对测试函数做标记,一个测试函数可以有多个marker,一个marker也可以用来标记多个测试函数
比如我们需要进行冒烟测试,不可能把所有的用例都跑一遍,我们可以挑选一些重要的用例进行冒烟测试,为了把选定的测试加入冒烟测试,可以对他们添加@pytest.mark.smoke装饰器。我们有两个文件,里面分别放了两个测试用例
test_demo.py
import pytest @pytest.mark.get
def test_demo3():
print('我是tets demo 3') @pytest.mark.smoke
@pytest.mark.get
def test_demo4():
print('我是tets demo 4')
test_mark.py
import pytest @pytest.mark.get
def test_demo1():
print('我是tets demo 1') @pytest.mark.smoke
@pytest.mark.get
def test_demo2():
print('我是tets demo 2')
我们可以看到,冒烟测试两个文件里面各有一个,来使用-m参数执行一下,这样我们标记的smoke的用例就被执行了,其他的没有被执行

-m后面也可以使用表达式,可以在标记之间添加and,or,not关键字

跳过测试
要跳过某个测试,只需要简单的在测试函数上方添加@pytest.mark.skip()装饰器即可
比如下面的两个测试用例,我们只想执行test_demo2,则我们可以给test_demo1加上装饰器
import pytest @pytest.mark.skip()
def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2')

skipif
我们可以给要跳过的测试添加理由和条件,这时应当使用skipif来替代skip
import pytest @pytest.mark.skipif(3<5, reason='版本不匹配')
def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2')
前面的是个条件,可以是python的表达式,表达式的值为True时跳过,为false时执行。后面的是原因,在来执行一次

但我们仍然看不到跳过的原因,这时可以使用-rs

运行测试子集
运行测试有很多方式,不但可以选择运行某个测试目录、文件、类中的测试,还可以选择运行某一个测试用例
运行单个目录
运行单个目录下的所有测试,以目录作为pytest的参数即可
比如我testpytest目录下有两个测试文件,分别是test_demo.py和test_mark.py

运行单个测试文件
运行单个文件里的全部测试,以路径名加文件名作为pytest参数即可
比如我们只想运行testpytest目录下的test_demo.py文件

运行单个测试函数
运行单个测试函数,只需要在文件名后添加::符号和函数名
比如我们只想运行testpytest目录下的test_demo.py文件里的test_demo3这个函数

运行单个测试类
与运行单个函数类似,只需要在文件名后面加上::符号和类名
import pytest class Test1():
def test_demo3(self):
print('我是tets demo 3') def test_demo4(self):
print('我是tets demo 4') class Test2():
def test_demo1(self):
print('我是tets demo 1') def test_demo2(self):
print('我是tets demo 2')
比如我们只想运行Test2的类

运行单个测试类中的测试方法
如果不希望运行测试类中的所有测试,只想指定运行其中一个,则在类名后面再加上::符号和方法名

用测试名划分测试集合
-k选项允许用一个表达式指定需要运行的测试,该表达式可以匹配测试名(或者子串)。表达式中可以包含and,or,not
def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2') def test_demo3():
print('我是tets demo 3') def test_parm():
print('我是tets parm')
如上代码我们只想运行测试函数里面有demo的所有用例

参数化
可以使用 @pytest.mark.parametrize(argnames, argvalues) 装饰器达到批量传送参数的目的
parametrize()的第一个参数是用逗号分割的字符串列表,第二个参数是一个值列表
import pytest
@pytest.mark.parametrize("a,b,c",
[(1, 2, 3),
(3, 2, 5),
(4, 5, 9)])
def test_add(a, b, c):
assert a + b == c

pytest--运行指定的测试和参数化的更多相关文章
- pytest 运行指定用例
pytest运行指定用例 随着软件功能的增加,模块越来越多,也意味用例越来越多,为了节约执行时间,快速得到测试报告与结果,在工作中可以通过运行指定用例,达到快速执行用例 例子目录 spec_sub1_ ...
- pytest之收集用例规则与运行指定用例
前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...
- 11、pytest -- 测试的参数化
目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...
- pytest -- 测试的参数化
目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...
- pytest跳过指定的测试或模块
参考Allure官方文档,pytest官方文档 实现setup/teardown 1.运行带指定标记的测试 @pytest.mark.tags ,这里的tags可以自定义 命令行执行:pytest - ...
- pytest文档19-doctest测试框架
前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...
- Pytest命令行执行测试
Pytest命令行执行测试 from collections import namedtuple Task = namedtuple('Task', ['summary','owner','done' ...
- pytest(3):pytest运行参数介绍
前言 pytest 带有很多参数,可以使用 pytest --help 来查看帮助文档,下面介绍几种常用的参数: 无参数 读取路径下所有符合规则的文件,类,方法,函数全部执行.使用方法如下: py ...
- windows ping 某个网段,不能运行指定的软件
windows ping 某个网段,不能运行指定的软件 :begin @echo OFF color 0a Title Net Test Tool by:HRuinger Mode con cols= ...
随机推荐
- 《 .NET并发编程实战》实战习题集 - 3 - CRUD项目中使用FP
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- 关于CSS特性和选择器
1层叠 样式冲突的遵循就近原则, 2继承 子代会继承父代的某些属性,例如字体大小,字体颜色 3优先级 !important 权重最高 通配符 * 和 继承的属性 权重为 0 0 0 0 行内样式权 ...
- Java反射复习
三种实例化对象: 1.Class<?> cls = Class.forName("java.util.Date") ; *** System.out.println(c ...
- docker部署angular和asp.net core组成的前后端分离项目
最近使用docker对项目进行了改进,把步骤记录一下,顺便说明一下项目的结构. 项目是前后端分离的项目,后端使用asp.net core 2.2,采用ddd+cqrs架构的分层思想,前端使用的是ang ...
- Python - 基础语法 - 第一天
编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 标识符 第一个字符必须是字母表中字母或下划线 _ . 标识符的其他的部分由字母.数字和下划线 ...
- Spring Cloud微服务架构升级总结
↵ [编者的话]微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组 ...
- css的尺寸、display的属性、以及浮动和清除浮动的方法
css的尺寸width heightline-height 行高是由三部分构成,上间距 文本高度 下间距,且上下间距相等.所以文字居中.行高:一旦设置了行高,元素内部必须有内容.line-height ...
- 自定义组件实现双向绑定v-model
自定义组件实现 v-model 双向绑定,首先要先明白 v-model,这个指令到底实现了什么? v-model实际做的事情就是:传入一个value属性值,然后监听input事件返回一个值,用该返回值 ...
- 你家的APS系统有这些功能吗?排程系统功能盘点
随着企业规模不断扩大,在经营管理方面会面临各种各样的问题,为了帮助解决此类问题,很多公司都会引入APS高级排程系统帮助进行生产管理的优化. APS系统针对的管理目标是 改善库存控制,大幅降低原料与中间 ...
- 面试题:android用户注册代码 密码需要加密传输吗
答案是肯定的,至少比明文好 客户端注册和登录的时候:一个可行的方法是,客户端提交 md5(password) 密码(如上所述,此方法只是简单保护了密码,是可能被查表获取密码的). 注册的时候:服务端数 ...