pytest框架的安装与使用
pytest框架的安装与使用
一,pytest了解
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。
优点:
1.第一个优点肯定是简单,灵活,易上手
2.支持参数化,pytest直接使用@pytest.mark.parametrize装饰器
3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
4.pytest有丰富的第三方插件库,比如pytest-HTML、allure插件,专门用作与测试报告。pytest-selenium插件,集成测试。pytest-rerunfailures插件,用于失败重跑。pytest-assume插件,多重效验。pytest-ordering设定执行顺序等实用插件。
5.pytest断言直接在assert 后面接表达式
6.conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。
7.scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
二,安装
1.安装pytest
2种安装方法。
1是直接通过pip安装。安装命令为:pip install pytest,
检测是否安装成功命令:pytest --version ,如果他显示了版本名称,就表示已经安装成功。
2是通过官网直接下载然后放进python插件库里。
下载地址:https://pypi.org/project/pytest/
2.安装插件
安装html插件命令:pip install pytest-html
除开 pytest-html插件外 ,pytest还具备丰富的插件库,pytest插件汇总站点:http://plugincompat.herokuapp.com/
三,pytest执行测试需要遵循的规则(重要)
· .py测试文件必须以test_开头或者_test结尾
· 测试类必须以Test开头,并且不能有init方法
· 测试方法必须以test_开头
· 测试断言用assert
使用:
1,先创一个以test_开头的文件
2,创建一个Test_code
3,创建测试方法
# -*- coding: utf-8 -*- class Test_code:
def test_jian(self):
assert 520==520
执行有两种方法:
1,是通过dos命令或者pycharm的命令窗口输入pytest。

2是通过在主函数中用代码执行。需要导入pytest包。
可以在mian()中填上哪个用例方法就执行哪个。
# -*- coding: utf-8 -*-
import pytest
class Test_code:
def test_jian(self):
assert 520==520 if __name__ == '__main__':
pytest.main()
四,全能的mark
1,标签
我们在运行测试用例的时候,有时候不需要全部测试,那我们就可以通过给用例打标签的方式来执行用例。
使用:
1,创建一个pytest.ini文件,在文件中按照以下格式添加标签名:
2,我们通过 (@pytest.mark.标签名) 这个代码放在用例上面来标明。一个用例可以用多个标签来表示
冒号前是标签名,冒号后面是注释,方便明白标签是什么意思。
注意:这个文件中不能含任何中文。
[pytest]
markers=
smoke:smoke test
demo:demo test
给用例赋予标签,代码如下:
注意:可以给类赋予标签,也可以给用例赋予标签
# -*- coding: utf-8 -*-
import pytest @pytest.mark.demo
class Test_code:
@pytest.mark.smoke
def test_jian(self):
assert 520==520
运行:dos命令 pytest -m 标签名

或者
if __name__ == '__main__':
pytest.main(['-m','demo'])
2,fifixture功能
# -*- coding: utf-8 -*-
import pytest
#把前置
@pytest.mark.demo
class Test_code:
@pytest.mark.usefixtures("aa1") #把环境放在用例前,会在执行用例前执行这个环境aa1
@pytest.mark.smoke
def test_jian(self):
assert 520==520 @pytest.fixture() #声明这是fixture函数,
def aa(seif):
print("先执行我,然后再执行用例方法")
aa=1+1
yield aa1 # 类似分隔符号, yield 后面接变量名 再执行后可以输出aa
print("执行完用例后再执行我")
多个文件共享一个fixture
可以可以将fixture放在指定文件conftest.py中,来实现多个文件共享一个fixture(文件名不可更改)
import pytest @pytest.fixture() #声明这个是fixture函数
def aa(seif):
print("先执行我,然后再执行用例方法")
aa=1+1
yield aa # 类似分隔符号, yield 后面接变量名 再执行后可以输出aa
print("执行完用例后再执行我")
3,参数化
pytest参数化 和unittest中的ddt相似。都是把数据放入用例中执行。
使用@pytest.mark.parametrize() 代码将数据代入用例中,括号中必须声明代入用例中的变量名,用引号引起,变量名必须一样
list=([('741852963', '123456', '123456'),
('122886', '123456', '123456')])
@pytest.mark.parametrize('urer,passd,ex',list) # 代入数据代码
def test_shuju(self,urer,pwd,ex): #变量名要和parametrize里面一样
print('这个是用户名'.format(urer))
print('这个是密码{}'.format(pwd))
assert pwd==ex
4,失败重跑
我们使用:pip3 install pytest-rerunfailures 代码来下载插件
使用:@pytest.mark.flaky() 代码放在用例前面
list=([('741852963', '123456', '123456'),
('122886', '123456', '123456')])
@pytest.mark.flaky(reruns=5, reruns_delay=1) # 如果失败则延迟1s后重跑 最多跑五次
@pytest.mark.parametrize('urer,passd,ex',list)
def test_shuju(self,urer,pwd,ex):
print('这个是用户名'.format(urer))
print('这个是密码{}'.format(pwd))
assert pwd==ex
pytest框架的安装与使用的更多相关文章
- pytest 简介与安装
前面我们已经基本上掌握了unittest测试框架,下面我们将学习新的pytest测试框架.之于原因嘛,太流行啦!掌握一个框架是不够的,急需另外一个,于是瞅上了pytest. pytest是什么? py ...
- pytest 框架自动化Selenium 之yield 使用
环境 python 3.7 由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9,3.5-最新 pip install pytest专属 pytest框架包 pip inst ...
- Pytest框架介绍
Pytest框架介绍.安装 pytest是python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,功能更强大 pytest特征 1:断言提示信 ...
- pytest框架之rerunfailures失败重运行机制
web自动化测试中,稳定性在整个测试运行中都至关重要,但不能保证测试脚本或者测试环境一直都能够稳定,它牵扯到诸多因素,在这里就不赘述,pytest框架相较于unittest的一大优势就在于拥有用例失败 ...
- 【Pytest01】全网最全最新的Pytest框架快速入门
一.Pytest简介pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,还可以用来做seleni ...
- pytest框架使用教程
Pytest框架 一.简介 pytest:基于unittest之上的单元测试框架 有什么特点? 自动发现测试模块和测试方法 断言更加方便,assert + 表达式,例如 assert 1 == 1 灵 ...
- requests接口自动化-pytest框架
pytest框架规则 测试文件以test_开头或者以_test结尾 测试类以Test开头,并且不能带有init方法 测试函数以test_开头 断言使用assert pytest框架运行用例 运行单个文 ...
- 自从学会了Python自动化Pytest框架,领导再也不敢在我背后指手划脚了
前言 大家都知道Python有自带的单元测试框架unittest,那为什么还要学习Pytest呢?先了解下Pytest优点 pytest: pytest是一个非常成熟的全功能的Python测试框架,是 ...
- 『德不孤』Pytest框架 — 2、Pytest的基本使用
目录 1.Pytest安装 2.Pytest常用插件 3.Pytest运行的第一个例子 4.Pytest框架的运行方式 5.在PyCharm中以Pytest的方式运行测试用例 1.Pytest安装 C ...
随机推荐
- http的几种请求方法
1.HTTP请求方法有以下8种方法:OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE和CONNECT. GET GET请求会显示请求指定的资源.一般来说GET方法应该只用于 ...
- Python中的队列
参考资料: https://www.cnblogs.com/yhleng/p/9493457.html 问:我们为什么想使用队列? 答:为了方便,我就想喂给队列一堆object,就想让它们先进先出(F ...
- SQL去掉重复数据
SELECT vc_your_email,vc_our_ref_or_code INTO #tmp FROM( SELECT vc_your_email,vc_our_ref_or_code,ROW_ ...
- 定量度量程序复杂度的McCabe方法
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 请画出下面代码的 ...
- 深入浅出PyTorch(算子篇)
Tensor 自从张量(Tensor)计算这个概念出现后,神经网络的算法就可以看作是一系列的张量计算.所谓的张量,它原本是个数学概念,表示各种向量或者数值之间的关系.PyTorch的张量(torch. ...
- webpack4.X + react-router 路由跳转
webpack4.X react-router 环境准备工作:windows7.webStorm 2017.1.4.Nodejs 8.7.0.npm 5.4.2 PS:安装的时我们都带上版本,这样即 ...
- Linux虚拟网络:Docker网络知识之基础篇
我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...
- 服务认证(JWT)
上一篇已经讲了微服务组件中的 路由网关(Zuul),但是未介绍服务认证相关,本章主要讲解基于Spring Security 与 JJWT 实现 JWT(JSON Web Token)为接口做授权处理… ...
- 断路器Hystrix(Ribbon)
微服务架构中,根据业务划分成若干个服务,各单元应用间通过服务注册与订阅的方式互相依赖,依赖通过远程调用的方式执行,该方式难以避免因网络或自身原因而出现故障或者延迟,从而并不能保证服务的100%可用,此 ...
- springsecurity简单学习
一.初识SpringSecurity 在springboot项目中加入spring security. 1.在pom.xml中加入依赖 <dependency> <groupId&g ...