废话少说,我们直接上干货。

一、Pytest简介

1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:

简单灵活,容易上手,支持参数化

2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试,requests+pytest接口自动化测试

3.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:

pytest-selenium(集成selenium)

pytest-html(完美html测试报告生成)

pytest-rerunfailures(失败用例重复执行)

pytest-xdist(多CPU分发)

4.测试用例的skip和xfail处理

5.可以很好的和jenkins集成

6.pytest也支持allure测试报告

7.能兼容unittest,是unittest的扩展

二、Pytest以及常用插件安装

把如下内容写到一个txt文件中,如require-install.txt

pytest

pytest-html

pytest-xdist

pytest-rerunfailures

然后在Dos窗口中使用此命令安装所有的模块:pip install -r require-install.txt

通过命令:pytest --version验证安装结果。如果报如下错误则需要调整python或pytest的版本,这是python和pytest的版本不兼容:

下面说两个错误例子,一个是win7、python3.7.4以及pytest5.0+,将python降到3.7.3就ok了,另一个是Windows 10, python 3.8.1, pytest 5.3.3,将pytest降到4.6.9以下版本也ok,因此建议你要么降python版本,要么降pytest版本试试。

笔者使用的是:win7+python3.7.3+pytest5.4.1,亲测没问题。

三、 pytest框架基础应用

  1. pytest运行函数时和运行类里面的方法情况如下:

import pytest

def test01():

print('测试用例一')

def abcd():

print('测试用例二')

class TestCase:

def test_03(self):

print('测试用例三')

def defg(self):

print('测试用例四')

if __name__ == '__main__':

pytest.main(['-s','pytest-demo.py'])

运行结果如下:

注意事项:

(1) 测试函数、类中的测试方法都必须以test_ 开头,当然以什么开头在pytest可自定义。

(2) 测试类必须以Test开头,并且不能带有init方法

(3) 断言必须使用assert断言

执行方式:

(1) 主函数方式运行:

指定运行文件:pytest.main([’-s’,'pytest-demo.py模块名’])

注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest.main()运行。因为pytest.main()会运行当前目录下所有以test_开头或者以_test结尾的文件。

(2) 命令行方式运行

点开Pycharm左下角的:Terminal打开当面目录下的命令行窗口。

输入命令执行:pytest pytest-demo.py模块名

注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest命令运行,因为pytest会运行当前目录下所有以test_开头或者以_test结尾的文件。

四、 运行时参数说明

-s:显示打印内容

如:pytest pytest-demo.py -s

等价于:pytest.main([’-s’,'pytest-demo.py’])

:::指定测试用例运行

运行函数:如:pytest pytest-demo.py::test_01

等价于:pytest.main([’-s’,'pytest-demo.py::test01’])

运行类中方法:如:pytest pytest-demp.py::TestCase::test_03

等价于:pytest.main([’-s’, 'pytest-demo.py::TestCase::test_03’])

–html=路径/report.html:生成xml/html格式测试报告(需要先安装pytest-html)

如:pytest pytest-demp.py --html-./report.html

等价于:pytest.main([’-s’,'pytest-demo.py’,’–html=./report.html’])

–maxfail=1:出现1个失败就终止测试

如:pytest pytest-demo.py --maxfail=1

等价于:pytest.main([’-s’,'pytest-demo.py’,’–maxfail=1’])

-n:pytest-xdist多线程运行(需要先安装pytest-xdist)

如:pytest pytest-demo.py -n 2

等价于:pytest.main([’-s’,'pytest-demo.py’,’-n=2’])

在用例中使用time.sleep(2)加等待时间测试,发现多线程时间减少了。

–reruns NUM:重试运行测试用例(需要先安装pytest-rerunfailures)

如:pytest pytest-demo.py --reruns 2

则一旦有用例失败,则会重复执行两次,貌似这种不能用main运行。

由此能看出:pytest.main([’-s’,'pytest-demo.py模块名’]),main方法中是传入的一个list格式,list中可以传入多个参数。

五、pytest的ini配置文件

pytest.ini文件是pytest的主配置文件,可以改变pytest的默认行为。

1.pytest.ini的放置位置:一般放在项目工程的根目录(即当前项目的顶级文件夹下)

2.pytest.ini的作用:指定pytest的运行方式(在cmd输入pytest后,会读取pytest.ini中的配置信息,按指定的方式去运行)

3.cmd下使用 pytest -h 命令查看pytest.ini的设置选项(以下截图只是部分选项)

常用设置选项如下:

[pytest]

addopts = -s …#可添加多个命令行参数,用空格分隔

testpaths = …/pytestproject#测试用例文件夹,可自己配置,…/pytestproject为上一层的pytestproject文件夹。

python_files = test*.py#配置测试搜索的模块文件名称

python_classes = Test*#配置测试搜索的测试类名

python_funtions = test#配置测试搜索的测试函数名

示例如下:

[pytest]

addopts = -s --html=./report.html

testpaths = …/pytestproject

python_files = test*.py

python_classes = Test*

python_funtions = test*

注意:

1.运行的时候自动读取配置文件,运行pytestproject下的所有test开头的模块文件。

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

学习资料可以找到我们呢的蓓蓓小姐姐【mashang-qq】备注【csdn000】免费领取哦

【必须备注】不然不会通过哦

可以自助拿走,群号913569736(备注“csdn000”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

pytest框架快速入门-pytest运行时参数说明,pytest详解,pytest.ini详解相关推荐

  1. Quartz 框架快速入门(二)

    尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...

  2. Quartz 框架快速入门(四)

    Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务.Spring通过JobDetailBean,Met ...

  3. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  4. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

  5. 微信小程序wepy框架快速入门

    微信小程序wepy框架快速入门 微信小程序简介 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一 ...

  6. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  7. Python Scrapy中文教程,Scrapy框架快速入门!

    谈起爬虫必然要提起 Scrapy 框架,因为它能够帮助提升爬虫的效率,从而更好地实现爬虫. Scrapy 是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含 request ...

  8. MyBatis框架快速入门

    MyBatis框架快速入门 入门案例 创建一个关于Mybatis项目 首先创建一个空项目,然后新建一个moudle,选择quickstart,接下来把模块放到空项目之下.即可 实现mybatis查询数 ...

  9. Go语言Web框架:Beego框架快速入门

    文章目录 Beego框架快速入门 1.beego框架了解 2.MVC架构 3.环境搭建 4.beego的项目结构分析 5.Beego快速体验 6.Beego运行流程分析 7.Post案例实现 7.1前 ...

最新文章

  1. BitMap 原理代码记录
  2. nyoj7街区最短路径问题
  3. 从windows server的文件服务到分布式文件服务(十)
  4. gethostbyname()函数说明
  5. linux上用mplayer播放cue文件的设想
  6. 【实践驱动开发3-005】TI WL1835MODCOM8 在android的移植 - SDIO and wifi 基础
  7. scala map方法源码
  8. 清理神器CleanMyMac 6.18“粽”级优惠
  9. QT造类器(操作简单)
  10. python微信语音转发方法_涨知识,微信语音能转发给别人啊,方法还那么简单
  11. 1060显卡用什么软件测试,参测显卡超频测试——10分
  12. 角度与弧度的转换 C语言
  13. User does not have the ‘LOCK TABLES‘ privilege required to obtain a consistent snapshot by preventin
  14. 解决office的PPT和WPS的PPT不兼容的问题
  15. 软件测试--软件测试执行管理
  16. (转载)淘宝玉伯引发Web前后端研发模式讨论
  17. 使用log4j接管tomcat日志
  18. 网络舆情信息工作怎么做的解决方案
  19. excel按照显示的计算机,同一EXCEL文件在不同计算机上显示分页不同
  20. 【统一身份认证】——概念扫盲

热门文章

  1. 2020京东全球科技探索者大会来啦!三大体系CEO约你来开会!
  2. 服务注册与发现:Nacos Discovery
  3. 14、Hibernate的HQL与QBC检索
  4. Outlook2016关联QQ邮箱
  5. Asymptotic Notation and Recurrences
  6. 计算机专业英语推荐信,关于英文推荐信范文3篇
  7. STM32学习记录——74HC595四位数码管显示
  8. 光电二极管的采样电路
  9. 电脑采购杂志电脑采购杂志社电脑采购编辑部2022年第5期目录
  10. 就在本周末!北美最牛X的餐饮大咖都找齐了,值得你来朝圣这一次