『德不孤』Pytest框架 — 2、Pytest的基本使用
1、Pytest安装
CMD命令窗口执行Pytest测试框架安装命令:pip install -U pytest
(意思是如果没有安装,就进行安装,如果已安装就升级到最新版)
在CMD中检查Pytest测试框架是否安装成功:pytest –-version
C:\Users\L>pytest --version
pytest 6.1.2
2、Pytest常用插件
Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作,并且还可以自定义Pytest插件。
比较好用的例如:
pytest-selenium
:集成Selenium
。pytest-html
:生成html
格式的自动化测试报告。pytest-rerunfailures
:失败case
重复执行。pytest-xdist
:测试用例分布式执行,也可以说是多CPU分发。pytest-ordering
:用于改变测试用例的执行顺序。allure-pytest
:用于生成美观的测试报告。
Pytest插件列表网址: https://plugincompat.herokuapp.com,里面包含很多插件包,大家可依据工作的需求选择使用。
说明:我常用安装Python工具包的方式。
一个Python项目中可能会安装很多安装包,再次创建虚拟环境(新项目)是需要重新安装的,这很麻烦也费时间,或者项目部署的时候避免重装。
可以将现有项目的所有安装包记录在requirements.txt
文件,再另一个环境下一键安装所有安装包。
requirements.txt
文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。
- 使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:
pip freeze > requirements.txt
- 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:
pip install -r requirements.txt
如上所说:
我们可以把所有插件的模块名都写入一个.txt
文件夹中。
pytest-html
pytest-rerunfailures
pytest-xdist
pytest-ordering
allure-pytest
然后在CMD命令行中执行pip install -r requirements.txt
命令即可。(全局安装)
也可以在PyCharm中的命令行执行,但只针对于该项目。
提示:可以安装指定版本的模块
通过使用
==
、>=
、<=
、> <
来指定版本,不写则安装最新版。例如:
pip install pytest-xdist==2.2.0
将安装
pytest-xdist
模块2.2.0版本。
3、Pytest运行的第一个例子
我们直接在Pycharm例编写代码就可以。
"""
1.学习目标
掌握pytest编写测试用例的基本方法
2.操作步骤
2.1 导入pytest
2.2 直接编写测试用例
默认必须以test开头,你也可以到Pytest中修改测试例文件开头。
2.3 执行用例
pytest.main("-s 文件名")
3.python assert断言
assert 条件,"异常信息"
3.需求
"""
# 1.导入pytest
import pytest
# 2.编写所需的测试用例
# 此类方法表示一个函数
def test_login():
print("登录步骤")
# pytest所用的断言是Python自身断言assert关键字
assert "abcd" in "abcdefg"
def test_register():
print("注册步骤")
assert False
# 3.setup和teardown
# def setup_function():
# print("打开浏览器/打开APP")
#
# def teardown_function():
# print("关闭浏览器/关闭APP")
# 3.执行测试用例
if __name__ == '__main__':
# 注意过格式,main参数是一个列表
pytest.main(["-s", "test_pytest_01.py"])
"""
执行结果:
============================= test session starts =============================
platform win32 -- Python 3.7.7, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: J:\PyCharmWorkSpace\Pytest_d\pytest_demo
collected 2 items
test_pytest_01.py
登录步骤.
注册步骤F
(. 表示成功 ,F 表示失败)
================================== FAILURES ===================================
________________________________ test_register ________________________________
(下面是失败的具体说明)
def test_register():
print("注册步骤")
> assert False
E assert False
test_pytest_01.py:28: AssertionError
=========================== short test summary info ===========================
FAILED test_pytest_01.py::test_register - assert False
========================= 1 failed, 1 passed in 0.09s =========================
Process finished with exit code 0
"""
4、Pytest框架的运行方式
(1)Pytest主函数模式
- 运行所有测试用例:
pytest.main()
也可以加上参数:pytest.main(['-vs'])
提示:注意是所用测试用例,包括不同文件上的测试用例,都会执行。
- 执行指定文件的测试用例:
pytest.main(['-s','-v','test_a.py'])
也可以pytest.main(['-vs','test_a.py'])
- 执行指定包下的所有测试用例:
pytest.main(['-vs','./interface_testcase'])
提示:main函数的参数是一个列表数据类型。
(2)命令行模式
- 运行所有测试用例:
pytest
- 执行指定文件的测试用例:
pytest 文件路径/文件名
例如:pytest -vs ./test_a.py
- 执行指定包下的所有测试用例:
pytest 包路径/包名
例如:pytest -vs ./interface_testcase
(3)通过node id
执行指定测试用例
nodeid
由包名+模块文件名、分隔符、类名、方法名、函数名、参数构成,之间使用::
进行分割,举例如下:
- 运行模块中的指定用例类
pytest -vs ./interface_testcase/test_interface.py::test_01_func
或者
pytest.main(['-vs' ./interface_testcase/test_interface.py::test_01_func)
- 运行模块中的指定用例方法
pytest -vs test_interface.py::test_01_func::test_method
或者
pytest.main(['-vs' test_interface.py::test_01_func::test_method)
5、在PyCharm中以Pytest的方式运行测试用例
步骤1:
点击File —> Settings —> Tools —> Python Integrated Tools —> Testing
将default test runner
由unittests
变为pytest
,apply
应用一下。
步骤2:
在PyCharm的Edit configurations...
中配置以pytest
方式运行测试用例。
点击PyCharm右上角的Edit configurations...
,
在Edit configurations...
中点击左上角的+
号标志,添加Python tests —> pytest
步骤3:
然后选择target
运行的测试文件,可以选择module
(文件名),比如test_01.py
,也可以选择文件路径scripts path
。
设置完成后点击apply
应用。
最后:
我们在执行测试用例后,查看结果面板如下:
会发现比之前查看测试结果好用、美观多了。
『德不孤』Pytest框架 — 2、Pytest的基本使用的更多相关文章
- 『德不孤』Pytest框架 — 1、Pytest测试框架介绍
目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...
- 『德不孤』Pytest框架 — 3、Pytest的基础说明
目录 1.Pytest参数介绍 2.Pytest框架用例命名规则 3.Pytest Exit Code说明 4.pytest.ini全局配置文件 5.Pytest执行测试用例的顺序 1.Pytest参 ...
- 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数
目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...
- 『德不孤』Pytest框架 — 11、Pytest中Fixture装饰器(一)
目录 1.Fixture装饰器的用途 2.Fixture参数说明 3.Fixture装饰器简单应用 4.yield执行后置函数 1.Fixture装饰器的用途 做测试前后的初始化设置,如测试数据准备, ...
- 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件
目录 1.conftest.py文件介绍 2.conftest.py的注意事项 3.conftest.py的使用 4.不同位置conftest.py文件的优先级 5.conftest.py中Fixtu ...
- 『德不孤』Pytest框架 — 15、Pytest参数化
目录 1.Pytest参数化说明 2.Pytest参数化方式 3.parametrize装饰器参数说明 4.Pytest参数化(单个参数) 5.Pytest参数化(多个参数) 6.ids参数说明 1. ...
- 『德不孤』Pytest框架 — 6、Mark分组执行测试用例
目录 1.Pytest中的Mark介绍 2.Mark的使用 3.Mark的注册和使用 4.使用Mark完成失败重试 5.扩展 1.Pytest中的Mark介绍 Mark主要用于在测试用例/测试类中给用 ...
- 『德不孤』Pytest框架 — 12、Pytest中Fixture装饰器(二)
目录 5.addfinalizer关键字 6.带返回值的Fixture 7.Fixture实现参数化 (1)params参数的使用 (2)进阶使用 8.@pytest.mark.usefixtures ...
- 『德不孤』Pytest框架 — 4、Pytest跳过测试用例
目录 1.无条件跳过skip 2.有条件跳过skipif 3.练习 自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这 ...
随机推荐
- redis hash操作 list列表操作
HSET key 子key 子value 192.168.11.5:6379> HSET stu1 name 'zhangmingda'(integer) 1192.168.11.5:6379& ...
- win10修改Docker Desktop Installer的默认安装目录
Docker Desktop Installer软件默认安装会装在C:\Program Files\Docker的目录下,默认是不能修改的,但是我们可以通过设置软链接的方式把安装默认弄到其他盘 我们先 ...
- IDEA推荐配置(自动导入包、提示不区分大小写)
设置快捷键方式为eclipse 设置代码提示不区分大小写 自动导入包 可以通过 Ctrl + 鼠标滚轮 来控制代码字体大小显示 显示行号和显示区分方法线 代码一行显示不下,软分行显示,点击鼠标右键 增 ...
- 【LeetCode】260. Single Number III 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 异或 字典 日期 题目地址:https://leet ...
- 【LeetCode】398. Random Pick Index 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 每次遍历索引 字典保存索引 蓄水池抽样 日期 题目地 ...
- 【LeetCode】559. Maximum Depth of N-ary Tree 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://le ...
- 1266 - Points in Rectangle
1266 - Points in Rectangle PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...
- codeforce-601A. The Two Routes(最短路)
题意: 给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路. 然后给你M条双向路,代表这两个点之间有铁路连接. 然后告诉你如果两个点之间没有铁路,那么就是公路连接. 问你汽车和火车都到 ...
- sql注入-整数型
sql注入整数型 1.按照提示输入1,发现直接给出了SQL语句 2.使用order by判断字段数 首先使用order by 3 ,页面无回显,改为2之后页面显示正确.因此判断当前数据库当 ...
- 第二十三个知识点:写一个实现蒙哥马利算法的C程序
第二十三个知识点:写一个实现蒙哥马利算法的C程序 这次博客我将通过对蒙哥马利算法的一个实际的实现,来补充我们上周蒙哥马利算法的理论方面.这个用C语言实现的蒙哥马利算法,是为一个位数为64的计算机编写的 ...