1.pytest入门
- 测试发现:从多个文件里面去找到我们的测试用例
- 测试执行:按照一定的顺序和规则去执行,生成结果
- 测试判断:通过断言判断逾期结果和实际结果的差异
- 测试报告:统计测试进度,耗时,通过率,生成测试报告
- pytest是一个非常成熟的单元框架,比unittest更灵活,容易上手
- pytest可以和selenium、request、appium结合实现web自动化、接口自动化、app自动化
- pytest可以实现测试用例的跳过以及reruns失败用例充实
- pytest可以和allure生成非常美观的测试报告
- pytest可以和jenkins持续继承
- pytest有很多非常强大的插件,并且这些插件能够实现很多的实用操作
- pyest-html 生成html格式的测试报告
- pytest-xdist 测试用例分布式执行,多CPU分发
- pytest-ordering 改变测试用例的执行顺序
- pytest-rerunfailures 用例失败后重跑
- allure-pytest 生成美观的测试报告
- ......
- 安装方式:pip3 install xxx
- 模块名必须以test_开通或者_test结尾,必须有_
- 测试类必须以Test开头,并且不能有init初始化方法
- 测试方法必须以test开头,_可有可无

# -*- coding: utf-8 -*-
# @Time: 2022/5/3 16:37
# @Author: LiQi
# @Describe: import pytest """
main函数建议在项目主目录创建一个py文件,统一管理case执行情况
"""
if __name__ == '__main__':
#1.全部模块运行
pytest.main()
#2.指定模块运行,比如我们有多个py文件,我们只执行指定模块,main方法传参必须是list,里面可以有多个参数
pytest.main(['test_login.py']) #模块名.py #3.指定目录运行,比如我们有多个文件夹测试用例集合,我们指定某一个文件夹全部指向,而不是里面的某一个模块
pytest.main(['文件夹名'])
#4.通过nodeid指定用例运行,nodeid由模块名,分隔符,类名,方法名,函数名组成,分隔符是::
pytest.main(['文件夹名/模块名.py::类名::函数名']) #类里面包含的函数
pytest.main(['文件夹名/模块名.py::函数名']) #没有写类,单独的函数
2.命令行模式
# 命令行直接输入pytest全部执行
~/Desktop/py_scripy/pytest_x ❯ pytest
# 命令行指定模块执行
~/Desktop/py_scripy/pytest_x ❯ pytest 模块名.py
# 命令行指定目录执行
~/Desktop/py_scripy/pytest_x ❯ pytest 文件夹名
# 命令行指定函数
~/Desktop/py_scripy/pytest_x ❯ pytest 文件夹名/模块名.py::函数名
~/Desktop/py_scripy/pytest_x ❯ pytest 文件夹名/模块名.py::类名::函数名
- pytest.ini是pytest单元测试框架的核心配置文件
- 位置:一般放在项目的根目录下
- 名字:必须是pytest.ini ,不可以自定义
- 编码:必须是ANSI编码格式
- 作用:改变pytest的默认行为
- 运行的规则:不管主函数模式还是命令行运行,都会去读取这个文件,按里面的规则执行
#固定格式
[pytest]
# 执行时添加的运行参数
addopts = -vs -s
#测试用例执行的文件夹
testpaths = testcase
#配置测试搜索的模块文件名称
python_files = test*.py
# 配置测试搜索的测试类名
python_classes = Test*
#配置测试搜索的测试函数名
python_functions = test
#main函数
if __name__ == '__main__':
#全部模块
pytest.main(['-s'])
# 指定模块调试,其余组合场景与主函数运行一致
pytest.main(['-s','模块名.py'])
#命令行
pyest -s
pytest -s 模块名.py
#main函数
if __name__ == '__main__':
# main方法传参必须是list,里面可以有多个参数
pytest.main(['-v'])
#命令行
pytest -v
#main函数
if __name__ == '__main__':
pytest.main(['-vs'])
#命令行
pytest -vs
#main函数
if __name__ == '__main__':
pytest.main(['-vs','-n=2'])# 2指的是线程数,自定义
#命令行
pytest -vs -n 2
--reruns:失败用例重跑
#main函数
if __name__ == '__main__':
pytest.main(['-vs','-n=2','--reruns=3'])# 3指的是用例执行失败重跑的次数,自定义
#命令行
pytest -vs -n 2 --reruns 3
#main函数
if __name__ == '__main__':
pytest.main(['-vs','-n=2','-x'])
#命令行
pytest -vs -n 2 -x
#main函数
if __name__ == '__main__':
pytest.main(['-vs','-n=2','--maxfail=3'])# 3指的是用例执行最大失败数,达到次数则停止
#命令行
pytest -vs -n 2 --maxfail 3
安装:pip3 install pytest-html
#main函数
if __name__ == '__main__':
pytest.main(['-vs','--html="xxx/xxx.html"'])#指定在哪里路径生成
#命令行
pytest --html xxx/xxx.html
#main函数
if __name__ == '__main__':
pytest.main(['-vs','-k=str'])# str指的是包含的字符串,包含该字符串的所有case会执行
#命令行
pytest -k 字符串
五、pytest执行顺序
- unittest执行顺序是按ASSIC码大小顺序执行
- pytest执行测试顺序是从上向下执行
- 我们可以通过装饰器指定执行顺序
安装:pip3 install pytest-ordering
使用:@pytest.mark.run(order=number)
参数: order:int类型,指定case第几个执行
执行的时候,pytest会按顺序优先执行有该标记的用例,之后继续按顺序执行没有标记的用例
#示例
import pytest
class TestRegister:
#指定该用例第二个执行
@pytest.mark.run(order=2)
def test_login(self):
print('测试登录')
#指定该用例第一关执行
@pytest.mark.run(order=1)
def test_register(self):
print('测试注册')
#pytest.ini配置
#用例分组执行 ,格式:标签名:描述
markers =
smokey:冒烟用例
api:模块用例
#用例py文件
@pytest.mark.smoke
def test_register(self):
print('测试注册')
@pytest.mark.api
def test_login(self):
print('测试登录')
执行
#指定一个组执行
pytest -vs -m "分组标签名"
#指定多个组执行 使用or
pytest -vs -m "分组标签名 or 分组标签名"
@pytest.mark.skip(reason='原因描述')
#使用skip装饰器跳过,reason可添加跳过的原因
@pytest.mark.skipif(i=1,reason='描述')
#使用skipif装饰器跳过,reason可添加跳过的原因,格式:判断表达式,原因
1.pytest入门的更多相关文章
- pytest 入门及运行
关于pytest的入门教程,官网及网上已经很多了,那再多一点也无所谓吧!OK,进入正题~ 下面是一个测试用例,test_one.py def test_passing(): assert (1, ...
- pytest入门学习(2)
pytest的hello world pyt1.py def func(x): print (x+1); return x+1; def test_answer(): assert func(3) = ...
- pytest入门学习(1)
系统ubuntu 12.04 , 可上网 一.安装: 1.安装 setuptools 下载页面:https://bitbucket.org/pypa/setuptools/get/default.ta ...
- Python测试框架pytest入门基础
Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...
- 【PYTEST】第一章常用命令
pytest入门 安装pytest 运行pytest pytest常用命令 1. 安装pytest pip install pytest 2. 运行pytest 2.1 pytest默认搜索当前目录下 ...
- pytest学习--快速入门
一.pytest简介 Pytest是python的一种单元测试框架. pytest的特点: 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试框架(no ...
- pytest文档1-环境准备与入门
前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...
- pytest 学习笔记一 入门篇
前言 之前做自动化测试的时候,用的测试框架为Python自带的unittest框架,随着工作的深入,发现了另外一个框架就是pytest (官方地址文档http://www.pytest.org/en/ ...
- Pytest权威教程01-安装及入门
目录 安装及入门 安装 Pytest 创建你的第一个测试用例 执行多条测试用例 断言抛出了指定异常 使用类组织多条测试用例 函数测试中请求使用独立的临时目录 进一步阅读 返回: Pytest权威教程 ...
随机推荐
- 4 亿用户,7W+ 作业调度难题,Bigo 基于 Apache DolphinScheduler 巧化解
点击上方 蓝字关注我们 ✎ 编 者 按 成立于 2014 年的 Bigo,成立以来就聚焦于在全球范围内提供音视频服务.面对 4 亿多用户,Bigo 大数据团队打造的计算平台基于 Apache Dolp ...
- .NET 纯原生实现 Cron 定时任务执行,未依赖第三方组件
常用的定时任务组件有 Quartz.Net 和 Hangfire 两种,这两种是使用人数比较多的定时任务组件,个人以前也是使用的 Hangfire ,慢慢的发现自己想要的其实只是一个能够根据 Cron ...
- Live2d Widget
写在最前 最早的时候看别人的博客很多都有一个可爱的看板娘,然后就找了教程给自己也整了一个.因为找到的教程都是稂莠不齐的,原作者自己说的也略显含糊(其实是我自己看不懂).总之秉承着一如既往的小白风格.把 ...
- 【MIDO】乐理基础 与 python - 从零开始到编写柱式和弦与分解和弦
本篇文章从律学开始,从十二平均律出发,介绍一些基础必要的乐理知识,然后编写python文件,输出和弦音频文件. 乐理知识部分: 一.律学简述(temperament) 1.概论 律学,又称&q ...
- [第二章 web进阶]XSS闯关-1
定义:跨站脚本(Cross_Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种.它允许恶意用户将代码注入网页,其他用户浏览网 ...
- KingbaseES 数据库Windows环境下注册数据库服务
关键字: KingbaseES.Java.Register.服务注册 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows ...
- 导出DNS服务器上的记录
近日遇到一个需求,需要将DNS服务器上的所有记录都导出. 试了一下,如果从DNS管理单元里直接选择导出列表,那么子域的DNS记录是不会被导出的.这样显然不行,需要寻找其它方法.本来想用Export-D ...
- Python数据科学手册-Pandas:累计与分组
简单累计功能 Series sum() 返回一个 统计值 DataFrame sum.默认对每列进行统计 设置axis参数,对每一行 进行统计 describe()可以计算每一列的若干常用统计值. 获 ...
- 百度ueditor工具栏配置大全
toolbars: [[ 'source', // 源代码 'anchor', // 锚点 'undo', // 撤销 'redo', // 重做 'bold', // 加粗 'indent', // ...
- .NET 反向代理 YARP 通过编码方式配置域名转发
前面介绍了 YARP 通过配置文件的方式配置代理转发(传送门),而众所周知,微软的一贯作风就是能通过配置文件做的事情,通过编码的方式也能实现!YARP 也不例外,废话不多说,直接上代码! 首先,参照官 ...