前言

pytest 运行用例的时候,一般用命令行去执行,可能是之前深受 unittest 框架的影响,习惯在项目的根目录下写一个 run_all.py 的文件。【使用pytest测试框架一般使用pytest.ini主文件指定运行测试用例;详细查看:pytest之配置文件pytest.ini - 习久性成 - 博客园】
运行的时候,使用 python 运行 run_all.py 来执行测试用例。

pytest.main()

先看看  pytest.main()  的源码,main 函数 的内容:

  • args 传一个list对象,list 里面是多个命令行的参数。【包括运行的测试用例(例如:test_a.py);运行测试用例的命令行参数(例如:-vs)】
  • plugins 传一个list对象,list 里面是初始化的时候需注册的插件。

def main(args=None, plugins=None):""" return exit code, after performing an in-process test run.:arg args: list of command line arguments.:arg plugins: list of plugin objects to be auto-registered duringinitialization."""from _pytest.main import EXIT_USAGEERRORtry:try:config = _prepareconfig(args, plugins)except ConftestImportFailure as e:exc_info = ExceptionInfo(e.excinfo)tw = py.io.TerminalWriter(sys.stderr)tw.line("ImportError while loading conftest '{e.path}'.".format(e=e), red=True)exc_info.traceback = exc_info.traceback.filter(filter_traceback)exc_repr = (exc_info.getrepr(style="short", chain=False)if exc_info.tracebackelse exc_info.exconly())formatted_tb = safe_str(exc_repr)for line in formatted_tb.splitlines():tw.line(line.rstrip(), red=True)return 4else:try:return config.hook.pytest_cmdline_main(config=config)finally:config._ensure_unconfigure()except UsageError as e:tw = py.io.TerminalWriter(sys.stderr)for msg in e.args:tw.line("ERROR: {}\n".format(msg), red=True)return EXIT_USAGEERROR

 main() 函数如果不带任何参数,那么执行的效果跟我们在 cmd 直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例。

run_all.py/main.py

在项目的根目录,新建一个 run_all.py 的文件。

只需写简单的2行代码:

import pytest# 默认运行的是当前目录及子目录的所有文件夹的测试用例
pytest.main()

这样就能在 pycharm 里面右键运行,不带参数默认运行当前目录及子目录的所有文件夹的测试用例。

例如:

带参数运行

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

-s:显示程序中的 print/logging 输出。
-v:丰富信息模式, 输出更详细的用例执行信息。
-k:运行包含某个字符串的测试用例。如:pytest -k add XX.py 表示运行 XX.py 中包含 add 的测试用例。
-q:简单输出模式, 不输出环境信息。
-x:出现一条测试用例失败就退出测试。在调试阶段非常有用,当测试用例失败时,应该先调试通过,而不是继续执行测试用例。

1、在命令行运行带上 -s 参数: pytest -s 

那么在 pytest.main() 里面等价于:

import pytest# 带上-s参数
pytest.main(["-s"])

2、在命令行运行带上多个参数时: pytest -s -x 

那么在 pytest.main() 里面等价于:

import pytest# 带上-s -x参数
pytest.main(["-s", "-x"])

指定运行某个用例

1、指定运行 cases/module1 文件夹下的全部用例, 在命令行运行时, 先 cd 到项目的根目录: pytest cases/module1 

那么在 pytest.main() 里面等价于:

import pytest# 运行指定文件夹目录
pytest.main(["cases/module1"])

2、运行指定的 cases/module1/test_x1.py 下的全部用例,在命令行运行时, 先cd到项目的根目录: pytest cases/module1/test_x1.py 

那么在 pytest.main() 里面等价于:

import pytest# 运行指定py文件
pytest.main(["cases/module1/test_x1.py"])

3、运行指定的 cases/module1/test_x1.py 下的某一个用例 test_x, 在命令行运行时, 先cd到项目的根目录: pytest cases/module1/test_x1.py::test_x 

那么在 pytest.main() 里面等价于:

import pytest# 运行指定py文件下的test_x
pytest.main(["cases/module1/test_x1.py::test_x"])

plugins参数的使用

一般我们写插件的代码放到 conftest.py 会被pytest查找到;

如果不是写到 conftest.py 的插件内容,可以通过 plugins 参数指定加载:【默认级别相当于fixture函数中的session级别:在所有目录以及子目录的用例执行之前首先执行一次仅执行一次plugins指定的函数】

# run_all.py
import pytest# 在run_all.py下自定义插件
class MyPlugin(object):def pytest_sessionstart(self):print("*** test run start blog地址 https://www.cnblogs.com/yoyoketang/")# plugins指定加载插件pytest.main(["cases/module1"], plugins=[MyPlugin()])

运行后会看到在测试用例开始执行之前打印上面的内容:

*** test run start blog地址 https://www.cnblogs.com/yoyoketang/
============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.9.0, pluggy-0.13.1
Test order randomisation NOT enabled. Enable with --random-order or --random-order-bucket=<bucket_type>
rootdir: D:\wangyiyun\web
plugins: repeat-0.8.0, rerunfailures-9.1, xdist-2.1.0
collected 5 itemscases\module1\test_x1.py .                                               [ 20%]
cases\module1\test_x2.py ....                                            [100%]========================== 5 passed in 0.05 seconds ===========================

plugins参数的作用就是指定需加载的插件,也可以指定多个。

原文链接:https://www.cnblogs.com/hls-code/p/15209062.html

pytest之执行测试pytest.main()的使用相关推荐

  1. Pytest和Allure测试框架-超详细版+实战

    加我微信:hz223336,领取pytest视频 文章目录 一:pytest的介绍,安装,框架结构,执行方式 1,特点 2,安装 3, pytest的框架结构 4,执行方式 二:Pytest -断言. ...

  2. 【Python】案例介绍Pytest进行压力测试

    在现代Web应用程序中,性能是至关重要的.为了确保应用程序能够在高负载下正常运行,我们需要进行性能测试. 今天,应小伙伴的提问, 田辛老师来写一个Pytest进行压力测试的简单案例. 这个案例的测试网 ...

  3. python pytest setupclass_简单了解pytest测试框架setup和tearDown

    pytest的setup与teardown 1)pytest提供了两套互相独立的setup 与 teardown和一对相对自由的setup与teardown 2)模块级与函数级 模块级(setup_m ...

  4. Pytest跳过执行之@pytest.mark.skip()详解大全

    一.skip介绍及运用 在我们自动化测试过程中,经常会遇到功能阻塞.功能未实现.环境等一系列外部因素问题导致的一些用例执行不了,这时我们就可以用到跳过skip用例,如果我们注释掉或删除掉,后面还要进行 ...

  5. 一、Pytest自动化测试框架 — Pytest和unittest测试框架原理

    目录 前言 ###文章内容有配套的学习视频和笔记都放在了文章末尾### 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5 ...

  6. 【Pytest】选择测试框架运行脚本(unittest、pytest、Aotudetect、Nosetest…)

    错误: pytest执行成功,但始终测试停留在页面登录首页,打印得日志也是主页登录得html,经查验,无语法错误,仅有第一次运行得时候,进行了一次传参,完成了传参参数得打印,之后得运行永远执行登录界面 ...

  7. python如何测试仪器_如何测试pytest设备本身?

    pytest有一个^{}插件,它是为了测试pytest本身和插件而设计的:它在一个独立的运行中执行不影响当前测试运行的测试.示例:# conftest.py import pytest pytest_ ...

  8. pytest之标记会失败的测试:pytest.mark.xfail

    可以在用例之前加上:@pytest.mark.xfail(),使用xfail标记,则告诉pytest运行此次测试,但是我们预期它会失败. 接着查看控制台输出结果,如果出现了小x或者X x代表XFAIL ...

  9. pytest十三:配置文件 pytest.ini

    pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini 文件,读取配置信息,按指定的方式去运行. ini 配置文件pytest 里面有些文件是非 test ...

最新文章

  1. 小程序clearinterval无效解决
  2. json 字符串传到action之后的处理,遍历. 练习代码片
  3. React Native系列(6) - 编译安卓私有React-Native代码
  4. IIS5.1错误,启动时WEB服务提示:服务器没有及时响应启动或控制请求 之终极解决方案。...
  5. [转]JS中判断鼠标按键判断
  6. 命名空间不能直接包含字段或方法之类的成员是什么意思_Python 学习笔记之类与实例...
  7. 朴素Bayse新闻分类实践
  8. csdn飞鸽传书 打了七天七夜
  9. SQL Server -- 如何书写优雅、漂亮的SQL脚本?
  10. 机械考计算机三级,机器人等级考试三级知识点汇总-20210706222922.pdf-原创力文档...
  11. 锐捷Ruijie交换机版本升级
  12. 户外大覆盖无线访问接入AP?
  13. 云上PDF怎么删除页眉页脚_有办法了!批量删除多个Word页眉页脚
  14. SQLyog免费下载地址
  15. 汽车OBD初级开发入门
  16. MMD以及核公式推导
  17. Python模块:Random(未完待续)
  18. unity3d获取子孙节点
  19. 【音特电子】整流二极管的工作原理与选型
  20. 建筑设计类软件整理ACDSee,PS,CAD,Ecotect,SketchUp,Phoenics,Revit,Rhino,

热门文章

  1. C语言指针中 *p 和 p 的区别
  2. 7款易上手C语言编程软件推荐
  3. TLD和eTLD的区别
  4. 突然发现 ViewState,Linq 水火不容
  5. 怎样让一个正常人理解“线性代数”。几乎花掉我全部百度金币下来的文章。
  6. Jmeter的配置原件操作
  7. Jmeter入门教程之配置原件(二)
  8. 前沿重器[24] | 聊聊对话系统:内容输出
  9. 【Benewake(北醒)】 单点系列标品介绍
  10. SQL Assistant简介