首页 > 编程语言 >python3 测试框架pytest入门

python3 测试框架pytest入门

时间:2023-02-01 18:06:55浏览次数:65  
标签:入门 -- pytest 测试用例 test 执行 html python3

1、安装pytest

2、安装html插件

3、编写测试用例

4、执行测试

5、生成测试报告


1.1 安装pytest

pip3 install pytest 执行该命令安装pytest

1.2 验证安装

pytest -V  查看当前已安装版本

python3 测试框架pytest入门_测试用例


1.3 pytest文档

官方文档:​​https://docs.pytest.org/en/latest/contents.html​

在pytest框架中,有如下约束:

所有的单测文件名都需要满足test_.py格式或_test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。


2、安装html插件

pip install pytest-html  #安装html插件

python3 测试框架pytest入门_测试用例_02


3、编写用例

pytest兼容unittest,所以在pytest框架中可以使用函数的形式编写测试用例,也可以使用类的形式编写测试用例。

3.1 函数形式编写测试用例

import pytest

def test_case1():
assert 11 == 11

def test_case2():
assert 22 == 23

3.2 类形式编写测试用例

import pytest

class Test:

def test_case1(self):
assert 11 == 11

def test_case2(self):
assert 22 == 23

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

python3 测试框架pytest入门_Test_03

运行结果可以看到,test_case1执行通过,test_case2执行失败

说明:

collected 1 item:pytest运行的时候一共收集到了2条测试用例。
test_sample.py F:标记F,是指测试结果失败,注意Failure和Error的区别。
[100%] :指测试用例运行的总体进度。
FAILURES:输出了详细的错误信息,帮助我们分析测试原因,我们可以看到"assert 22 == 23"这条语句出错了。

pytest运行的时候,默认会收集当前目录及其子目录中,所有test_.py或test.py文件中以"test"开头的测试函数。

测试用例运行结果标记符:

.点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error
S 表示用例被跳过 Skip
x 小写的 x 表示预期失败 xfail
X 大写的 X 表示预期失败,但是通过了


4、执行测试

除了直接在终端使用pytest执行测试用例外,还可以通过代码行使用pytest.main()的方法来执行测试用例

4.1 执行参数

#测试用例
class Test:

def test_case1(self):
assert 11 == 11

def test_case2(self):
assert 22 == 23
pytest -v  #显示测试用例的详细参数信息

python3 测试框架pytest入门_html_04

pytest -s  #显示测试用例的输出信息

python3 测试框架pytest入门_html_05

-k 'case or ca' 关键字过滤执行
-m 执行被标记的测试用例,例如-m 'case1而不是case2'
--markers 显示标记
-x 在遇到第一个执行错误或失败后立即退出
--maxfail=2 出现2次错误或失败后立即退出
--lf 只执行上次失败的测试用例,如果没有失败用例,则全部重新执行
--ff 执行所有测试用例,但先执行上次最后失败的用例
--cache-show 显示缓存内容,不收集和执行用例
--cache-clear 在执行开始时删除所有缓存
--sw 在测试失败时退出,并在下一次从失败用例开始执行

更详细的可以通过pytest -h查看


4.2 pytest.main 执行的参数传递

pytest.main()参数传递方式:

将所有参数放进列表,列表中的每一个参数对应一个元素

#测试用例
class Test:

def test_case1(self):
print('----->执行成功')
assert 11 == 11

def test_case2(self):
print('----->执行失败')
assert 22 == 23

if __name__ == '__main__':
pytest.main(['-v','-s'])


4.3 指定执行的测试目录

pytest Test/  #pytest 测试目录路径


4.4 指定执行测试文件

pytest Test/test_case.py  #pytest 测试文件路径


4.5 指定执行的测试文件类

pytest Test/test_case.py::Test  #pytest 测试文件::测试类 
会执行该测试类下的所有测试用例


4.6 指定执行测试方法

pytest Test/test_case.py::Test::test_case1  #pytest 测试文件::测试类::测试方法
会执行指定的测试方法


5、自动生成html测试报告

pytest.main(['-v','-s','--html=report.html'])
默认在当前文件夹自动生成report.html文件

python3 测试框架pytest入门_测试用例_06

如果在生成html时遇到No log output captured的情况,可以尝试在main中增加'--capture=sys'

pytest.main(['-v','-s','--html=report.html','--capture=sys'])

标签:入门,--,pytest,测试用例,test,执行,html,python3
From: https://blog.51cto.com/u_15949224/6031710

相关文章

  • Solidity极简入门#7. 映射类型
    这一讲,我们将介绍solidity中的哈希表:映射(Mapping)类型。映射Mapping在映射中,人们可以通过键(Key)来查询对应的值(Value),比如:通过一个人的id来查询他的钱包地址。声明映射的格式为......
  • Solidity极简入门#8. 变量初始值
    变量初始值在solidity中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。值类型初始值boolean:falsestring:""int:0uint:0enum:枚举中......
  • pytest.main()参数详解
      importpytestpytest.main(["-n3"])#3个进程并发执行,需要装pytest-xdist库pytest.main(["--collect-only"])#仅仅展......
  • Cesium打包入门(gulp与esbuild)_云上飞47636962的博客
    本文针对Cesium源码包的打包工具gulp和esbuild进行了初步探讨,属于入门篇。首先简要介绍采用gulp+esbuild如何为多个源代码文件打包成一个单独文件,然后介绍了下Cesium中的......
  • Git入门图文教程(1.5W字40图)
    01、认识一下Git!—简介Git是当前最先进、最主流的分布式版本控制系统,免费、开源!核心能力就是版本控制。再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被......
  • markdown入门学习
    1、标题(1)一级标题:#演示:一级标题一级标题的另一种写法:下一行写===演示:一级标题的另一种写法(2)二级标题:##演示:二级标题二级标题的另一种写法:下一行写---演示:二级......
  • C#零基础小白快速入门
    前言本文写给想学C#的朋友,目的是以较快的速度入门C#好学吗?对于这个问题,我以前的回答是:好学!但仔细想想,不是这么回事,对于新手来说,C#没有那么好学。如果你要入门Java,那学J......
  • CC1101RGPR学习笔记:工作原理简单入门
     众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G,4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一......
  • Go入门到入土(一):开发环境安装与调试
    Go入门到入土(一):开发环境安装与调试1.安装Go按照以下步骤安装Go:在Web浏览器中,转到“go.dev/doc/install”。下载操作系统的版本。下载后,运行安装程序。打开命......
  • Dubbo 入门系列之快速部署一个微服务应用
    本文将基于DubboSamples示例演示如何快速搭建并部署一个微服务应用。背景Dubbo作为一款微服务框架,最重要的是向用户提供跨进程的RPC远程调用能力。如上图所示,Dubb......