1、pytest介绍:基于unittest 之上的单元测试框架

  1.1、自动发现测试模块和测试用例;

    unitest 需要添加用例,(泰斯特楼贷)加载器加载测试用例

    pytest 只需要一条代码就可以

  1.2、断言使用 assert + 表达;

    unitest 定义了所有的 断言方式

    pytest  只需要使用一个关键字 assert + 表达式 就可以了,表达式为真则断言通过,表达式为假则断言失败

  1.3、pytest 可以设置测试会话级、模块级、类级、函数级的 fixtures;

  1.4、有丰富的插件库,目前在600个以上(框架库插件地址:http://plugincompat.herokuapp.com/)

2、pytest 收集测试用例规则(按照:目录-文件-函数/类)

  2.1、默认从当前目录中搜集测试用例,即在那个目录下运行pytest  命令,则从那个目录当中搜索

    2.2、搜索规则:进入目录后,在按照搜索规则搜索用例

      2.2.1、符合命名规则    test_*.py   或者   *_test.py   的文件

      2.2.2、以   test_   开头的函数名

      2.3.3、以 Test  开头的测试类(没有   _init_  函数)当中,以  test_  开头的函数

3.执行方式

第一种:cmd  中执行  pytest 命令;先进入代码所在文件,然后执行 pytest 命令

==========   testsession starts ========:代表会话开始

  • python3.7:代表那个平台
  • pytest-5.2.1 :代表pytest版本
  • rootdir:代表搜索用例的地址

第二种:同第一种方法:在 pycharm 控制台的   Terminal 功能,执行  pytest 命令

命令:pytest

pytest -h     :控制台查看命令行参数

执行标签名 aaa 的测试用例
pytest -m 标签名   :通过命令行 -m 过滤用例运行
例如:pytest -m aaa pytest -m 标签名 -s -v   :控制台搜索输出详情用例名,可以看到成功与失败提示
例如:pytest -m aaa-s -v

实例:

 

第三种:pytest 的 main 函数 (同前两种方法)

import pytest
if __name__ == '__main__':
pytest.main()

3、pytest - Mark(打标签是为了筛选测试用例:冒烟、回归)

  3.1、注册标签名

    3.1.1、注册方式:创建  pytest.ini 文件,在文件中按如下形式添加标签名

[pytest]
markers=
aaa:mao yan
bbb
ccc
ddd # 标签名冒号后面可以添加注释信息必须是英文
# 红色字段为固定模式,不能改变

    3.1.2、在测试用例/ 测试类前面加上标签:@pytest.mark.已注册的标记名

import pytest

# 单个标记
@pytest.mark.aaa
def test_aaa():
assert 100 == 100

    3.1.3、可以在一个用例上打多个标签,多次使用:@pytest.mark.已注册的标记名

import pytest

# 多个标记
@pytest.mark.aaa
@pytest.mark.ddd
def test_bbb():
assert 200 == 200

    3.1.3、在给类打标签,类里面的函数打标签

# 给测试类打标签
@pytest.mark.ddd
class TestDemo:
@pytest.mark.bbb
def test_ccc(self):
assert 300 == 300 @pytest.mark.ccc
def test_ddd(self):
assert 400 == 400 def test_0_eee(self):
assert 500 == 500

  3.2、方式二:

    3.2.1、在测试类里,使用以下申明(测试类下,所有用例都被打上该标签)

class TestDemo:
# 单个标签
pytestmark = pytest.mark.已注册标签名
# 多个标签
pytestmark = [pytest.mark.标签1, pytest.mark.标签1]

    3.2.2、在模块文件里(py文件下,所有测试函数和测试类里面的测试函数,都有会打上该标签)

import pytest
# 单个标签
pytestmark = pytest.mark.已注册标签名
# 多个标签
pytestmark = [pytest.mark.标签1, pytest.mark.标签1]

4、pytest用例执行顺序

  4.1、文件名称 按 ASCII 码排序

  4.2、文件内部按代码先后顺序排序

大佬文档:https://www.cnblogs.com/Simple-Small/p/11077123.html

*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******

pytest框架-介绍、Mark(打标签)、命令运行用例、用例执行顺序、的更多相关文章

  1. Pytest框架介绍

    Pytest框架介绍.安装 pytest是python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,功能更强大 pytest特征 1:断言提示信 ...

  2. Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  3. pytest框架之mark标签

    对测试用例打标签,在运行测试用例的时候,可根据标签名来过滤要运行的用例. 一.注册标签名 1.创建pytest.ini文件,在文件中按如下方式添加标签名: [pytest] markers = smo ...

  4. pytest一:pytest 框架介绍

    pytest 是 python 的一种单元测试框架,与python 自带的 unittest测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高.根据pytest 的官方网站介绍,它具 ...

  5. pytest框架之rerunfailures失败重运行机制

    web自动化测试中,稳定性在整个测试运行中都至关重要,但不能保证测试脚本或者测试环境一直都能够稳定,它牵扯到诸多因素,在这里就不赘述,pytest框架相较于unittest的一大优势就在于拥有用例失败 ...

  6. 【pytest系列】- pytest测试框架介绍与运行

    如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html 前言​ ​ 目前有两种纯测试的测 ...

  7. pytest框架之命令行参数1

    前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...

  8. 【pytest系列】- mark标记功能详细介绍

    如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html mark标记 ​ 在实际工作中, ...

  9. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

随机推荐

  1. python基于SMTP发送邮件

    import smtplib from email.header import Header from email.mime.text import MIMEText ''' SMTP是发送邮件的协议 ...

  2. SQL SERVER 备份数据库时候错误处理

    当备份数据库时候出现如下错误时候 只需要删除备份目标就行了

  3. ubuntu 没有桌面 没有图标,只剩下壁纸

    sudo apt-get update sudo apt-get install --reinstall ubuntu-desktop sudo apt-get install unity sudo ...

  4. Java性能优化的50个细节,我必须分享给你!

    来源:blog.csdn.net/dongnan591172113/article/details/51790428 ;i<list.size();i++) ,len=list.size();i ...

  5. <Python基础>python是如何进行内存管理的

    .Python 是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制⒈对象的引用计数机制Python 内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用 ...

  6. POJ - 3294~Relevant Phrases of Annihilation SPOJ - PHRASES~Substrings POJ - 1226~POJ - 3450 ~ POJ - 3080 (后缀数组求解多个串的公共字串问题)

    多个字符串的相关问题 这类问题的一个常用做法是,先将所有的字符串连接起来, 然后求后缀数组 和 height 数组,再利用 height 数组进行求解. 这中间可能需要二分答案. POJ - 3294 ...

  7. shell脚本,循环的记录

    ######################################################################### # File Name: showlogged.sh ...

  8. 在github上怎样克隆vue项目及运行

    长时间不做vue项目,今天看vue项目运行时有些指令忘记了,在这里写下相关指令 .克隆已有项目,一般情况项目中的README.md写的是项目运行步骤,一般项目的运行如下 克隆项目 git clone ...

  9. SpringMVC参数绑定(未完待续)

    1. Strut2与SpringMVC接收请求参数的区别 Struts2通过action类的成员变量接收SpringMVC通过controller方法的形参接收 2. SpringMVC参数绑定流程 ...

  10. Element-ui之修改样式

    修改样式的方法 官网上面介绍了几种方法: 当然还有其他的方法,比如: 直接在标签上面采用行内式: 在组件中的style里面添加样式: 引入.scss文件(注意:如果是公用样式最好在index.scss ...