前 言

pytest到目前为止还没有翻译的比较好全面的使用文档,很多英文不太好的小伙伴,在学习时看英文文档还是很吃力。本来去年就计划写pytest详细的使用文档的,由于时间关系一直搁置,直到今天才开始写。本文是第一篇,主要介绍pytest的入门使用,后续会分篇针对pytest中的各个功能出详细的使用教程。

一、准备:环境安装

pytest 是 python 中的第三方库,使用之前需要先安装,在命令行中运行以下安装命令 :

pip insatll pytest

检查安装是否成功以及安装的版本,命令行命令如下:

pytest --version

执行上述命令,能够输出版本信息,那就说明安装成功啦。

二、用例编写

当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。

1、默认的用例识别的规则

  • 1、用例文件:所有文件名为 test_ 开头 或者 _test 开头的文件会被识别为用例文件。
  • 2:用例类,测试文件中每个 Test 开头的类就是一个测试用例类。
  • 3、测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例,

备注:上述默认的用例查找规则,可在 pytest 的配置文件进行修改(后续章节会详细介绍配置文件的使用)

另外 pytest 兼容 unittest,以 unittest 的用例编写规范写的用例,pytest 都能够识别出来

通过了解上述 pytest 中用例识别的规则,可以知道 pytest 中用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。

2、函数形式编写用例

规则:用例方法名以 test 开头即可

# \testcases\test_demo1.pydef test_demo():assert 100 == 100

使用命令 pytest 就可以执行测试函数,输出结果如下:

C:\testcases>pytest
======================test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins:  testreport-1.1.2
collected 1 item
test_demo1.py .    [100%]
====================== 1 passed in 0.26s ======================

3、以类的形式编写用例

规则:测试类命名以 Test 开头,用例方法以 test 开头

# test_demo2.py
class TestDome:def test_demo1(self):assert 11 == 11def test_demo(self):assert 22 == 21

命令 pytest 运行上述用例,结果如下:

====================== test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins:  testreport-1.1.2
collected 2 items
test_demo1.py .F                  [100%]
====================== FAILURES ======================
___________ TestDome.test_demo ____________
self = <test_demo1.TestDome object at 0x0445F450>def test_demo(self):
>       assert 22 == 21
E       assert 22 == 21
test_demo1.py:25: AssertionError
====================== short test summary info =======================
FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21
====================== 1 failed, 1 passed in 0.53s ======================

上面的运行结果可以看出来,一条用例执行通过,一条执行失败

三、执行测试

在上面我们使用的是 pytest 这个命令去执行测试用例。关于 pytest 执行测试,有两种方式,一种是命令行通过 pytest 这个命令执行,另外在代码中可以通过 pytest.main() 这个方法来执行测试。接下来就和大家分别详细的介绍一下 pytest 执行测试的方式和常用的参数

1、执行参数

测试用例

# 测试用例
class TestDome:def test_demo1(self):print('----测试用例执行-----------')assert 11 == 11

参数 -v : 显示测试的详细参数信息

C:\testcases>pytest -s
=========================== test session starts ===========================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins: testreport-1.1.2
collected 1 item
test_demo1.py::TestDome::test_demo1 ----测试用例执行---输出1--------
----测试用例执行---输出2--------
PASSED
=========================== 1 passed in 0.28s ===========================

2、pytest.main 执行的参数传递

pytest.main 方法执行测试参数传递方式:

所以的参数放在列表中,每个参数就是列表中的一个元素

pytest.main(['-v','-s'])

详细的参数可以使用命令 pytest -h 查看

3、指定执行的测试目录

命令 pytest 测试目录路径

pytest testcase/

pytest 会执行指定目录路径下所有的测试用例

4、指定执行的测试文件

命令 pytest 测试文件路径

pytest testcase/test_demo1.py

pytest 会执行指定测试文件中下所有的测试用例

5、指定执行的测试类

命令 pytest 测试文件::测试类

pytest testcase/test_demo1.py::TestClass

pytest 会执行指定测试类里面所有的测试用例

6、指定执行的测试用例

命令 pytest 测试文件::测试类::测试方法

pytest testcase/test_demo1.py::TestClass::test_method

pytest 会执行指定的测试方法

基本的入门就给大家介绍到这里,从下一篇开始给大家详细介绍 pytest 的相关特性

下面是我当时学习时用过的部分资料,有需要的朋友可以评论区留言

单元测试界的高富帅,Pytest框架,手把手教学,从入门到精通(一)相关推荐

  1. .net MVC5+EF6+bootstrap搭建框架,从入门到精通(三)——之(Bootstrap Fileinput)多图片上传

    .net MVC5+EF6+bootstrap搭建框架,从入门到精通(三)--之(Bootstrap Fileinput)多图片上传 前言废话 .net mvc 实战多图片上传 前言废话 人生最大的b ...

  2. 前端界扛把子|千锋前端入门到精通视频教程免费学习了

    Hello,各位锋迷们, 今天给大家带来 千锋教研院院长王蓝浠老师力荐的 <千锋HTML5大前端开发教程1000集>教程 可以说是非常的细致.全面 扫码一键直达课程学习地址 千锋教育, # ...

  3. 单元测试界的高富帅,Pytest框架,手把手教学,高阶用法实战

    一.xunit 风格的前后置方法 1.函数用例的前后置方法 在模块中以函数形式定义用例,可以通过 setup_function 和 teardown_function 来定义函数用例的前后置方法,使用 ...

  4. Python使用pytest框架进行单元测试

    在使用pytest框架进行单元测试之前,VsCode中需要已经安装Python插件,并且当前项目的环境中需要引入pytest依赖库: poetry add pytest 默认情况下单元测试功能是关闭的 ...

  5. pytest框架安装(MacOS)

    pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,比 unittest 框架使用起来更简洁,效率更高.pytest容易上手,入门简单,文档丰富,文档中有很 ...

  6. pytest框架_Python最火的第三方开源测试框架——pytest

    一.介绍 本篇文章是介绍的是Python 世界中最火的第三方单元测试框架:pytest.它有如下主要特性: assert 断言失败时输出详细信息(再也不用去记忆 self.assert* 名称了) 自 ...

  7. Pytest框架集成Allure定制测试报告详解(一)

    Allure简介 Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架. 它支持绝大多数测试框架, 例如TestNG.Pytest.JUint等.它简单易用,易于集成.下面就Pytest如何 ...

  8. Pytest框架教程(一)

    一.快速上手Pytest框架 此文章转载于---------乙醇 (http://www.testclass.net/pytest/quick_start) 简介 pytest测试框架可以让我们很方便 ...

  9. 自动化测试框架-pytest框架入门篇

    前段时间,九九姐更新了自动化测试中unittest框架,然后有很多小伙伴私聊九九姐,说想学习一下pytest框架的内容.既然大家已经说话了,九九姐怎么能不安排呢,所以今天就给大家说一说pytest框架 ...

最新文章

  1. 三菱服务器显示d01,MR-J3-D01基础知识三菱MR-J3-D01指导手册(通用接口) - 广州正凌...
  2. python怎么判断一个文件是否存在-python怎么判断一个目录下是否存在某个文件??谢啦!...
  3. python网络编程案例_Python 网络编程_python网络编程基础_python高级编程
  4. Linux的inode的理解
  5. 结对编程前对队友程序的分析与对比总结
  6. 1130 - Host ‘win7' is not allowed to connect to this mysql server
  7. 大学生计算机python_非计算机专业的大学生,想学习Python需要多长时间
  8. request.META里包含了哪些数据?
  9. 无人车企哪家强?通用第一Waymo第二,苹果特斯拉进黑榜
  10. C++11 关键字noexcept 替代 throw
  11. 最新PHP乐购社区源码+点卡购物系统
  12. SPSS入门教程—相关性分析使用方法
  13. Java Web开发后端常用技术汇总
  14. 4.3 木马隐藏分析
  15. 防火墙技术之安全区域
  16. 华为HCNA独家视频课程
  17. 经典算法:二叉树的建立
  18. 虚拟化——初始化系统配置
  19. Java 官网下载+安装(Linux)
  20. 2016银行卡BIN

热门文章

  1. 解决目前阶段翻译插件Translation谷歌翻译的问题
  2. Bootstrap实战---电池充电特效编写2(仅d-flex布局)
  3. 雇用黑客 好处 坏处和弊端
  4. 写给程序猿的把妹指南:概述篇
  5. 从《青云志》看完美世界如何玩转影游联动,打造S级手游
  6. MacBook M1配置Clion
  7. 兼容并“包”NLP评价指标:Robustness Gym框架
  8. c++ 对象模型 7
  9. Flink流处理过程的部分原理分析
  10. linux运行程序 -sh: ./xxxxx: not found 解决办法