Pytest自定义用例执行顺序(推荐)

Unittest用例执行顺序

unittest框架和pytest框架编写的测试用例执行顺序,默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:09,AZ,a~z。

1.对于类来说,class TestAxx 会优先于class TestBxx被执行。

2.对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。

对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的。

背景:

我们写接口测试用例的时候,可以按上下接口顺序给它命名test_01…test_02…test_03…等等。

这样写的弊端是用例执行顺序是: test_01<test_02<test_03<test_04<test_05…

如果我想test_04在test_03前面呢? 有人会说,直接将test_04的代码,写到test_03里面去,相当于交换上下的位置,这样是可以。

如果是刚开始写是可以,可是后期变动维护起来显然是不方便。

这样就有人写了个插件来解决了这个问题,插件:pytest-ordering

下载地址:github 上有个 pytest-ordering 插件可以控制用例的执行顺序,github插件地址https://github.com/ftobia/pytest-ordering。

安装:

pip install pytest-ordering

默认执行顺序:

import pytest

def test_01():
    print("打开浏览器")

def test_02():
    print("输入url")

def test_03():
    print("输入账号")

def test_04():
    print("输入密码")

def test_05():
    print("勾选记住用户")

def test_06():
    print("单击登录")

运行结果:

在测试用例目录下输入

pytest -vs test.py

使用插件执行顺序:
使用 pytest-ordering 插件后改变测试用例顺序

import pytest

@pytest.mark.run(order=1)
def test_01():
    print("打开浏览器")
@pytest.mark.run(order=2)
def test_02():
    print("输入url")
@pytest.mark.run(order=4)
def test_03():
    print("输入账号")
@pytest.mark.run(order=3)
def test_04():
    print("输入密码")

@pytest.mark.last
def test_05():
    print("勾选记住用户")

def test_06():
    print("单击登录")

运行结果:

还是输入命令:

pytest -vs test.py

出现这个警告不要慌,在项目目录下新建pytest.ini文件,在文件输入以下内容:


这样就实现了自定义测试用例的执行顺序。

到此这篇关于Pytest自定义用例执行顺序的文章就介绍到这了,更多相关Pytest自定义用例顺序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中playwright结合pytest执行用例的实现

    目录 安装pytest插件 编写测试用例 忽略 HTTPS 错误和设置自定义视口大小 持久上下文 playwright结合Pytest为您的 Web 应用程序编写端到端的测试. 安装pytest插件 C:\Users\lifeng01>pip install pytest-playwright Collecting pytest-playwright Using cached pytest_playwright-0.2.2-py3-none-any.whl (9.8 kB) Requiremen

  • pytest用例间参数传递的两种实现方式示例

    目录 前言 一.通过conftest创建全局变量 二.使用tmpdir_factory方法 总结 前言 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B的某个字段的入参.如果是使用postman,那我们可以通过设置后置变量,然后在需要使用的地方通过{{}}的方式来进行调用.但是如果是使用自己写的测试框架中要如何实现呢?我想到的是如下三种方法. 首先说明一下,以下三种方式均是通过python + pytest来实现的 一.通过conftest创建全局变量 c

  • pytest fixtures装饰器的使用和如何控制用例的执行顺序

    pytest fixtures装饰器 pytest中可以使用@pytest.fixture 装饰器来装饰一个方法,被装饰方法的方法名可以作为一个参数传入到测试方法中.可以使用这种方式来完成测试之前的初始化,也可以返回数据给测试函数. 将fixture作为函数参数 通常使用setup和teardown来进行资源的初始化,如果有这样一个场景,测试用例1需要依赖登入功能,测试用例2不需要依赖登入功能,测试用例3需要登入功能,这种场景setup,teardown无法实现,也可以使用pytest fixt

  • Python教程之pytest命令行方式运行用例

    目录 前言 pycharm里命令行运行用例 终端中使用pytest 用例全部运行 打印详情-v 指定组别 使用表达式指定某些用例-k 遇到失败即停止运行-x 指定运行某个测试py文件 指定运行某个class 指定运行某个方法: 其他 总结 前言 用命令行方式调用用例是我们最常用的方式,这方面确实比java的TestNG框架要好用许多,至少不用写xml文件,为了提供定制化运行用例的方式,pytest提供了许多运行命令以供定制化运行某一类测试用例或者某个测试用例等: pycharm里命令行运行用例

  • Pytest自定义用例执行顺序(推荐)

    Unittest用例执行顺序 unittest框架和pytest框架编写的测试用例执行顺序,默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:09,AZ,a~z. 1.对于类来说,class TestAxx 会优先于class TestBxx被执行. 2.对于方法来说,test_aaa()方法会有优先于test_bbb()被执行. 对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的. 背景: 我们写接口测试用例的时候,可以按上下接口顺序给它命名test_01

  • Jquery ajax执行顺序 返回自定义错误信息(实例讲解)

    1.多个Ajax 在一个function中的执行顺序 由于Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了. 复制代码 代码如下: function TestAjax(){            var UserName = $("#txtUserName").val();            $.ajax(            {                url: &quo

  • Pytest自定义mark标记筛选用例

    如下图所示,我们编写的用例存放在不同的py文件当中 当我们想只运行诸多py文当中的部分用例,怎么办呢? 比如自动化工作当中,选择test_a,test_33,test_000这3个用例来运行的话,如何过滤呢? pytest.mark一下 在pytest当中,先给用例打标记,在运行时,通过标记名来过滤测试用例. 步骤1:给用例打标签 给用例打标记分为2个步骤: 1)注册标签名 官方提供的注册方式有2种,这里只提供一种最简单直接的方式: 通过pytest.ini配置文件注册.在pytest.ini文

  • pytest多进程或多线程执行测试实例

    目录 前言: 分布式执行用例的原则: 项目结构 测试脚本 多进程执行用例之pytest-xdist pytest-xdist分布式测试的原理: pytest-xdist分布式测试的流程: 第一步:master创建worker 第二步:workers收集测试项用例 第三步:master检测workers收集到的测试用例集 第四步:master分发测试用例 第五步:worker执行测试用例 第六步:测试结束 多线程执行用例之pytest-parallel 常用参数配置 pytest-parallel

  • 关于Spring BeanPostProcessor的执行顺序

    目录 Spring BeanPostProcessor执行顺序 Spring-BeanPostProcessor接口总结 定义 BeanPostProcessor BeanPostProcessor总结 InstantiationAwareBeanPostProcessor InstantiationAwareBeanPostProcessor总结 SmartInstantiationAwareBeanPostProcessor SmartInstantiationAwareBeanPostPr

  • spring初始化方法的执行顺序及其原理分析

    目录 Spring中初始化方法的执行顺序 首先通过一个例子来看其顺序 配置 我们进入这个类看 我们看到了annotation-config了 我们重点看下这行代码 我们直接看initializeBean这个方法 spring加载顺序典例 解决方案 Spring中初始化方法的执行顺序 首先通过一个例子来看其顺序 /**  * 调用顺序 init2(PostConstruct注解) --> afterPropertiesSet(InitializingBean接口) --> init3(init-

  • For循环中分号隔开的3部分的执行顺序探讨

    引发这个问题思考的是一段js程序的运行结果: 复制代码 代码如下: var i = 0; function a(){ for(i=0;i<20;i++){ } } function b(){ for(i=0;i<3;i++){ a(); } return i; } var Result = b(); 这段程序的运行结果是Result = 21: 从这段程序中我们可以看出,i在a函数返回的时候值是20这是没有问题的. 而在b函数返回的时候,i的值是20还是21就值得讨论了. 问题的本质即:先进行

  • 运行page页面时的事件执行顺序及页面的回发与否深度了解

    复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; pub

  • 解读IE和firefox下JScript和HREF的执行顺序

    很久都没有写关于代码方面的文章了.主要原因还是因为最近的工作都集中在需求分析方面,没有了现实中的感触,就没有了写作的动机.讨论一个关于JScript执行顺序的问题.示例代码如下: a.htm <A onmouseup="func('onmouseup')" href="b.htm">Click Me!</A> <A onclick="func2('onclick')" href="d.htm"&g

随机推荐