iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python教程之pytest命令行方式运行用例
  • 977
分享到

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

2024-04-02 19:04:59 977人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言PyCharm里命令行运行用例终端中使用pytest用例全部运行打印详情-v指定组别使用表达式指定某些用例-k遇到失败即停止运行-x指定运行某个测试py文件指定运行某个cla

前言

用命令行方式调用用例是我们最常用的方式,这方面确实比java的TestNG框架要好用许多,至少不用写xml文件,为了提供定制化运行用例的方式,pytest提供了许多运行命令以供定制化运行某一类测试用例或者某个测试用例等;

pycharm里命令行运行用例

在pycharm里写好了测试用例后如何运行呢?pycharm里好像并没有像eclipse里提供TestNG用的插件一样可以一键执行的方式,那么我们可以使用命令行的方式来进行,如下图所示为一个用例文件:

代码如下:


#-*- coding: utf-8 -*-
import pytest


class Test_simple():

    @pytest.mark.test
    def test_case1(self):
        print("testCase1")
        tof = True
        assert tof

    @pytest.mark.nORMal
    @pytest.mark.test
    def test_case2(self):
        print("testCase2")
        tof = False
        assert tof

    def test_case3(self):
        print("testCase3")
        assert True

    @pytest.mark.test
    def setup_class(self):
        print("用于test组")

    @pytest.mark.normal
    def setup_class(self):
        print("用于normal组")

如上所示添加了一个名为testSimple的工程,内添加了一些测试用例即Test_simple;

想要运行用例时可以打开下方的Terminal窗口:

会自动切换到当前工程目录下,而后即可使用pytest的命令了,如下对运行结果简单做下说明:

终端中使用pytest

在终端中使用pytest也是和在pycharm中类似,如下以windows系统为例:

先切换到用例所在工程或者目录而后运行pytest即可,如下:

linux系统中也是同样的使用方法,只是如果没有为pytest添加软连接,则需要在pytest前面加上python命令;

用例全部运行

全部运行时不需要添加任何后缀,只需要添加命令pytest即可,此时打印的信息比较简单:


E:\pyspace\testSimple>pytest
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 3 items                                                                                                                                                                                                                                                       

testcase\Test_simple.py .F.                                                                                                                                                                                                                                       [100%]

=============================================================================================================================== FaiLURES ===============================================================================================================================
________________________________________________________________________________________________________________________ Test_simple.test_case2 ________________________________________________________________________________________________________________________

self = <testcase.Test_simple.Test_simple object at 0x00000000038508D0>

    @pytest.mark.normal
    @pytest.mark.test
    def test_case2(self):
        print("testCase2")
        tof = False
>       assert tof
E       assert False

testcase\Test_simple.py:18: AssertionError
------------------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------------------
testCase2
================================================================================================================== 1 failed, 2 passed in 0.08 seconds ==================================================================================================================

E:\pyspace\testSimple>

打印详情-v

如上图所示,只显示了用例时成功还是失败,至于里边的log则没有打印,那么如果我们想要看运行详细信息怎么办呢?可以加上-v标签,如下:


E:\pyspace\testSimple>pytest -v
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 3 items                                                                                                                                                                                                                                                       

testcase/Test_simple.py::Test_simple::test_case1 PASSED                                                                                                                                                                                                           [ 33%]
testcase/Test_simple.py::Test_simple::test_case2 FAILED                                                                                                                                                                                                           [ 66%]
testcase/Test_simple.py::Test_simple::test_case3 PASSED                                                                                                                                                                                                           [100%]

=============================================================================================================================== FAILURES ===============================================================================================================================
________________________________________________________________________________________________________________________ Test_simple.test_case2 ________________________________________________________________________________________________________________________

self = <testcase.Test_simple.Test_simple object at 0x000000000382EDA0>

    @pytest.mark.normal
    @pytest.mark.test
    def test_case2(self):
        print("testCase2")
        tof = False
>       assert tof
E       assert False

testcase\Test_simple.py:18: AssertionError
------------------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------------------
testCase2
================================================================================================================== 1 failed, 2 passed in 0.08 seconds ==================================================================================================================

E:\pyspace\testSimple>

如上图会把详细信息都打印出来

指定组别

如果用例中包含多个分组,想要只运行其中一个组,则使用-m "组名"的方式,依然使用如上代码,运行命令和结果如下:


E:\pyspace\testSimple>pytest -s -m "normal"
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 3 items / 2 deselected / 1 selected                                                                                                                                                                                                                           

testcase\Test_simple.py 用于normal组
testCase2
F

=============================================================================================================================== FAILURES ===============================================================================================================================
________________________________________________________________________________________________________________________ Test_simple.test_case2 ________________________________________________________________________________________________________________________

self = <testcase.Test_simple.Test_simple object at 0x00000000036D27F0>

    @pytest.mark.normal
    @pytest.mark.test
    def test_case2(self):
        print("testCase2")
        tof = False
>       assert tof
E       assert False

testcase\Test_simple.py:18: AssertionError
================================================================================================================ 1 failed, 2 deselected in 0.07 seconds ================================================================================================================

E:\pyspace\testSimple>

使用表达式指定某些用例-k

-k选项允许我们设置表达式来运行某些用例,如下传参就只运行了test_case1和test_case2


E:\pyspace\testSimple>pytest -v -k "case1 or case2"
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 3 items / 1 deselected / 2 selected                                                                                                                                                                                                                           

testcase/Test_simple.py::Test_simple::test_case1 PASSED                                                                                                                                                                                                           [ 50%]
testcase/Test_simple.py::Test_simple::test_case2 FAILED                                                                                                                                                                                                           [100%]

表达式的写法有许多,可以用全称如test_case1这样也可以去掉test_,除了or外也可以使用not来指定那些用例不跑;

遇到失败即停止运行-x

pytest的原本运行规则是每条用例均执行,不管是否有失败,如果我们想在用例运行时遇到失败即停止,则可以使用-x,如下所示,第二条用例失败后则不再运行第三条用例:


E:\pyspace\testSimple>pytest -v -x
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 3 items                                                                                                                                                                                                                                                       

testcase/Test_simple.py::Test_simple::test_case1 PASSED                                                                                                                                                                                                           [ 33%]
testcase/Test_simple.py::Test_simple::test_case2 FAILED                                                                                                                                                                                                           [ 66%]

=============================================================================================================================== FAILURES ===============================================================================================================================
________________________________________________________________________________________________________________________ Test_simple.test_case2 ________________________________________________________________________________________________________________________

self = <testcase.Test_simple.Test_simple object at 0x00000000037A9B00>

    @pytest.mark.normal
    @pytest.mark.test
    def test_case2(self):
        print("testCase2")
        tof = False
>       assert tof
E       assert False

testcase\Test_simple.py:18: AssertionError
------------------------------------------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------------------------------------------
testCase2
================================================================================================================== 1 failed, 1 passed in 0.08 seconds ==================================================================================================================

E:\pyspace\testSimple>

指定运行某个测试py文件

指定运行某个py文件,只需要接上文件相对路径即可:


E:\pyspace\testSimple>pytest -v testcase/Test_example.py
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 1 item                                                                                                                                                                                                                                                        

testcase/Test_example.py::Test_example::test_aaa PASSED                                                                                                                                                                                                           [100%]

======================================================================================================================= 1 passed in 0.02 seconds =======================================================================================================================

E:\pyspace\testSimple>

指定运行某个class

写法为:py文件路径::class名称,范例如下:


E:\pyspace\testSimple>pytest -v testcase/Test_example.py::Test_example2
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 1 item                                                                                                                                                                                                                                                        

testcase/Test_example.py::Test_example2::test_bbb PASSED                                                                                                                                                                                                          [100%]

======================================================================================================================= 1 passed in 0.08 seconds =======================================================================================================================

E:\pyspace\testSimple>

指定运行某个方法:

写法为:py文件路径::class名称::method名称,范例如下:


E:\pyspace\testSimple>pytest -v testcase/Test_example.py::Test_example2
========================================================================================================================= test session starts ==========================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.4.1, py-1.8.0, pluggy-0.11.0 -- e:\software\python\python3.7\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.7.1', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '4.4.1', 'py': '1.8.0', 'pluggy': '0.11.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-pytest': '2.6.3'}, 'JAVA_HOME': 'D:\\project\\jdk1.8'}
rootdir: E:\pyspace\testSimple
plugins: metadata-1.8.0, html-1.20.0, allure-pytest-2.6.3
collected 1 item                                                                                                                                                                                                                                                        

testcase/Test_example.py::Test_example2::test_bbb PASSED                                                                                                                                                                                                          [100%]

======================================================================================================================= 1 passed in 0.08 seconds =======================================================================================================================

E:\pyspace\testSimple>

如上几种也可以组合使用;

其他

pytest还包含许多其他用法,具体用法可以使用pytest --help来查看,如下:

总结

到此这篇关于Python教程之pytest命令行方式运行的文章就介绍到这了,更多相关pytest命令行方式运行内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python教程之pytest命令行方式运行用例

本文链接: https://www.lsjlt.com/news/160888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python教程之pytest命令行方式运行用例
    目录前言pycharm里命令行运行用例终端中使用pytest用例全部运行打印详情-v指定组别使用表达式指定某些用例-k遇到失败即停止运行-x指定运行某个测试py文件指定运行某个cla...
    99+
    2024-04-02
  • Python中的pytest命令行方式是怎样运行的
    Python中的pytest命令行方式是怎样运行的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言用命令行方式调用用例是我们最常用的方式,这方面确实比java的TestNG框...
    99+
    2023-06-22
  • pyw格式、命令行运行python程序与
    pyw格式简介:   与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序:   在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐(需要打开文件,再按下F5),使...
    99+
    2023-01-30
    命令行 格式 程序
  • Python命令行运行文件的实例方法
    1、说明 写了python文件,想通过命令执行它,进入目录,并在命令执行中输入python文件名称。 2、实例 例如,桌子上有文件hello.py,内容是印刷一句话 print(...
    99+
    2024-04-02
  • PHP中CLI命令行运行模式的示例分析
    这篇文章将为大家详细讲解有关PHP中CLI命令行运行模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP的CLI命令行运行模式浅析在做开发的时候,我们不仅仅只是做各种网站或者接口,也经常需要...
    99+
    2023-06-15
  • MySQL用命令行运行sql文件的详细图文教程
    目录1.按下键盘上的Windows+R键输入cmd,或在搜索框直接输入cmd2.进入mysql:3.创建sql文件里的数据库,输入一下的命令4.使用该数据库5.运行相关路径下的sql文件(绝对路径)6.查看补充知识:编写...
    99+
    2023-01-12
    mysql 运行sql文件 mysql用命令行导入sql文件 mysql命令行执行sql脚本
  • php案例:用Windows命令来运行php程序
    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 cyg.php命令: cyg.php ...
    99+
    2023-10-06
    php 开发语言
  • python运行cmd命令行的3种方法总结
    目录1.执行cmd命令,不显示执行过程中弹出的黑框2.执行cmd命令,并得到执行后的返回值,python调试界面输出返回值3.执行cmd命令,并得到执行后的返回值,python调试界...
    99+
    2024-04-02
  • python命令行模式的用法及流程
    1、使用cmd打开命令行窗口。 2、在输入python时,进入python交互模式。 3、输入exit(),退出交互模式,在命令行模式下运行.py程序。 实例 C:\Users\8...
    99+
    2024-04-02
  • shell命令行参数用法教程
    本篇内容介绍了“shell命令行参数用法教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一个shell脚本,它本身的命令参数是什么样呢?首...
    99+
    2023-06-09
  • 关于命令行执行Python脚本的传参方式
    目录命令行执行Python脚本的传参应用场景方式一方式二python-命令行传参sys.argv实际运用argv获取参数getopt模块实例实际场景运用命令行执行Python脚本的传...
    99+
    2024-04-02
  • 教你如何用命令行方式关闭CentOS防火墙
    导读本教程教你如何用命令行方式关闭CentOS防火墙。在防火墙中开放端口80和端口22的方法...
    99+
    2023-06-05
  • Ubuntu20.04--开机自动运行脚本(命令)--方法/实例
    原文网址:Ubuntu20.04--开机自动运行脚本(命令)--方法/实例_IT利刃出鞘的博客-CSDN博客 简介         本文介绍Ubuntu20.04如何开机自动运行命令。(也适用于Ubuntu22.04版本) 新版本方案(20...
    99+
    2023-09-03
    ubuntu linux 服务器
  • C语言和命令行之间的交互方式
    本篇内容介绍了“C语言和命令行之间的交互方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Windows操作系统中,后缀为.exe的文件都...
    99+
    2023-06-20
  • Python 中如何通过 shell 命令运行 Django 应用程序?
    Django 是一个基于 Python 的 Web 框架,它提供了强大的工具和功能来帮助开发人员构建高效、灵活、可扩展的 Web 应用程序。在开发 Django 应用程序时,我们通常需要在命令行中执行一些操作,比如运行服务器、创建数据库、...
    99+
    2023-09-27
    关键字 shell django
  • Python入门教程(三十二)Python的命令行输入
    命令行输入 Python 允许命令行输入。 这意味着我们能够要求用户输入。 Python 3.6 中的方法与 Python 2.7 略有不同。 Python 3.6 使用 input...
    99+
    2023-05-18
    Python Python 命令行
  • MySQL用命令行方式建库和表
    本篇内容主要讲解“MySQL用命令行方式建库和表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL用命令行方式建库和表”吧! 1.创建 ...
    99+
    2024-04-02
  • Python提高运行速度工具之Pandarallel的使用教程
    目录1.准备2.使用 Pandarallel3.注意事项众所周知,由于 GIL 的存在,Python 单进程中的所有操作都是在一个CPU核上进行的,所以为了提高运行速度,我们一般会采...
    99+
    2024-04-02
  • C#开发交互式命令行应用示例
    目录前言Sharprompt介绍Demo结论前言 如果你开发过vue应用,应该对其交互式命令行印象深刻: 它允许你无需任何编程经验,仅需回答问题,就可完成vue应用创建。 虽然作为...
    99+
    2024-04-02
  • 使用SSH远程运行Linux命令具体方法是什么
    使用SSH远程运行Linux命令具体方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作