我是靠谱客的博主 年轻鱼,最近开发中收集的这篇文章主要介绍pytest 常用命令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

pytest支持自定义标记,可以将项目划分多个模块,然后按照指定模块执行

mark标记

demo test_m.py

只运行web标记的测,在cmd运行的时候加-m web,指定参数值web

pytest -v -m web/直接在编辑器使用["-s", "test_server.py", "-m=web]

如果不想执行标记web的用例,就使用pytest -v -m “not web”

-v 指定函数节点id

如想要运行某个.py模块下类的一个用例,如TestClass里面的test_method用例,每个test_开头的用例,函数的明细就是用例的节点id,指定节点id运行用-v 参数

pytest -v test_m.py::TestClass::test_method

也可以运行整个class

>pytest -v test_m.py::TestClass

也可以运行多个节点,多个节点之间用空格隔开

pytest -v test_server.py::TestClass test_server.py::test_send_http

-k匹配用例名称

可以使用-k命令运行指定在匹配用例名称的表达式

pytest -v -k http

也可以排除某些用例

pytest -k “not send_http” -v

同时也可以选择匹配多个

pytest -k “http or quick” -v

pytest.main()的使用

pytest在运行用例的时候,一般会使用命令行去执行,但也可以像unittest框架一样,在该项目的根目录下写一个run_all.py的文件,运行该文件即可

pytest.main()

pytest.main(args,plugins) args:传一个list对象,list里面是多个命令行的参数 plugins 传一个list对象,在list里面初始化的时候注册的插件

如果不带任何参数,那么在执行的效果与cms直接运行pytest命令一样,默认运行当前目录及子目录的所有文件夹的测试用例

带参数运行

在运行的时候,也可以指定参数运行

-s:显示程序中的print/logging输出

-v:丰富信息模式,输出更详细的用例执行信息

-k:运行包含某个字符的测试用例,eg:pytest -k add xx.py 中包含add的用例

-q:简单输出模式,不输出环境信息

-x:出现一条测试用例失败就退出测试,在调试阶段非常有用,当测试用例失败时,应调试通过,而不是继续执行测试用例

在命令行带上-s参数

多个参数-s -v

plugins参数的使用

一般我们在写插件的代码上放置在conftest.py会被pytest查找,如果不写在conftest.py,也可以通过plugins参数指定加载

pytest fixture之name参数使用别名

在使用fixture的name参数,使用别名更容易理解

demo

定义fixture打开浏览器,测试用例使用fixture的前置操作

open_broswer这个fixture返回打开浏览器的实例的driver,后面的测试用例传open_broswer参数,此时open_broswer就相当于driver了,这个时候就可以将open_broswer重命名name,改成driver,这样就更之前的一样了

备注:重命名的千万别有误区,这里是重命名,如果是调用函数,其后面是有括号的

为了实现上面的效果,又不引起误解,可以在fixture里面是有name参数

pytest文档内置fixture pytestconfig动态添加和获取pytest.ini

pytestconfig是可以获取pytest.ini里面的配置参数

有一些配置参数添加到配置里面,如configid、productid以及环境的base_url地址、账号相关信息

addini有4个参数:self,name,help,type=None,default=None

动态添加配置信息

添加命令行参数,可以用addoption来添加命令行参数

  • 第一个'url' 是参数的名称
  • type 是类型,默认None,可以设置:None, "pathlist", "args", "linelist", "bool"
  • default 是设置的默认值
  • help 是设置帮助文档,方便查阅

pytest文档-内置request读取项目根目录rootdir

在写自动化测试项目的时候,会使用到配置文件,比如读取数据库相关配置文件,单独放置在config配置文件,方便维护

pytest的内置fixture可以获取到配置文件相关信息,request.config.rootdir用于获取项目的根目录

pytest第三方插件

1、pytest-dependency

前言

该插件是pytest的第三方,主要解决的是的用例之间的依赖关系。如果依赖的上下文失败,后面的用例会被标识跳过该执行,相当于执行了pytest.mark.skip

dependency可作用域范围有:session、package、module、class

安装 pip install pytest-dependency

官方示例:pytest-dependency

2、基本用法

首先需要在用例开始位置打上装饰器@pytest.mark.dependency(),这里代表用例为主条件,如果该条用例失败,关联他的用例会跳过执行。

在被关联的用例上,也需要打上带参数的装饰器@pytest.mark.dependency(),depends接受的参数关联的依赖用例名

在depends也可以用别名的方式指定用例名

2.1 Test类下实现方式

2.2 函数方式

2.3 别名方式

3、定义依赖范围

官方详解

我们可以看到scope可接受四种参数定义的类型('session','package','module'或'class')

scope='class‘,其作用于所属类,外部类不会被关联

scope=’module‘ 不传递时默认是module,作用于当前文件

置灰查找当前文件符合条件的文件名,类里同名的方法不会被依赖

scope=’package‘,其作用于当前目录统计的依赖函数,跨目录无法找到依赖函数

scope=’session‘ 作用全局,可跨目录调用,单倍依赖的用例必须先执行

pytest执行顺序

pytest默认按字母顺序去执行的(小写英文—>大写英文—>0-9数字)

用例之间的顺序是文件之间按照ASCLL码排序,文件内的用例按照从上往下执行。

setup_module->setup_claas->setup_function->testcase->teardown_function->teardown_claas->teardown_module

可以通过第三方插件pytest-ordering实现自定义用例执行顺序

pytest-ordering 指定用例的运行顺序

pytest默认是按照字母来执行执行顺序,由于多接口之间存在值引用的关系,此时就需要执行case的执行顺序。pytest控制case执行顺序的插件是pytest-ordering,直接用pip安装。

1.安装依赖包

pip install pytest-ordering

2、pytest-ordering的使用

通过装饰器的方式来控制执行顺序

方式一

方式二

方式三

执行优先级:0>较小的正数>较大的正数>无标记>较小的负数>较大的负数

方式四

 

最后

以上就是年轻鱼为你收集整理的pytest 常用命令的全部内容,希望文章能够帮你解决pytest 常用命令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部