python测试模块-pytest介绍
1、pytest介绍
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。
它具有如下特点:
•非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
•能够支持简单的单元测试和复杂的功能测试
•支持参数化
•执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败
•支持重复执行失败的case
•支持运行由nose, unittest编写的测试case
•具有很多第三方插件,并且可以自定义扩展
•方便的和持续集成工具集成
2、pytest的安装
pip install pytest
安装完成后,可以验证安装的版本:
pytest --version
3、pytest的命令格式
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
positional arguments:file_or_dir
4、测试用例
1)编写单个测试函数
编写测试文件sample.py,如下:
def func(x):
return x+1
def test_func():
assert func(3) == 5
定义一个被测试函数func,该函数将传递进来的参数加1后返回。还定义了一个测试函数test_func(可以任意命名,但是必须以test开头)用来对func进行测试。test_func中,我们使用基本的断言语句assert来对结果进行验证。执行测试的时候,我们只需要在测试文件sample.py所在的目录下,运行python -m pytest -v sample.py即可
2)编写测试类
当需要编写多个测试样例的时候,我们可以将其放到一个测试类当中
测试文件dd.py
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
运行测试文件pytest dd.py即可
5、如何编写pytest测试样例
规范写法:
•测试文件以test_开头(以_test结尾也可以)
•测试类必须以Test开头,并且不能带有 init 方法(带__init__方法,会报waring)
•测试函数或方法以test_开头,函数体里面使用assert ,调用被测试的函数
•断言使用基本的assert即可
备注:
1、其实测试函数或方法只要以test开头就可以被运行的
2、测试文件的名字,其实可以是任意的文件名,不过以非test_开头的命名时,运行时,必须以指定测试文件名的方式才可以搜索到并执行它,使用pytest,pytest 文件目录,这样的命令,执行测试文件时,是找不到非test_开头的测试文件的
6、如何执行pytest测试样例
pytest # run all tests below current dir
在当前测试文件的目录下,寻找以test开头的文件(即测试文件),找到测试文件之后,进入到测试文件中寻找test_开头的测试函数并执行
pytest test_mod.py # run tests in module 执行某一个指定的测试文件
pytest somepath # run all tests below somepath 运行某一个目录下的所有测试用例
pytest -k stringexpr # only run tests with names that match the
# the "string expression", e.g. "MyClass and not method"
# will select TestMyClass.test_something
# but not TestMyClass.test_method_simple
pytest xxx.py::test_func # 执行某一测试文件中的某一指定函数
7、测试报告
pytest可以方便的生成测试报告,即可以生成HTML的测试报告,也可以生成XML格式的测试报告用来与持续集成工具集成
生成HTML格式报告:
pytest --resultlog=path #默认生成的是html格式
生成XML格式的报告:
pytest --junit-xml=path #不同版本的pytest该命令可能不一样
8、如何获取帮助信息
pytest --version # shows where pytest was imported from
pytest -h | --help # show help on command line and config file options
9、最佳实践
其实对于测试而言,特别是在持续集成环境中,我们的所有测试最好是在虚拟环境中。这样不同的虚拟环境中的测试不会相互干扰的。由于我们的实际工作中,在同一个Jekins中,运行了好多种不同项目册的测试,因此,各个测试项目运行在各自的虚拟环境中。
将pytest安装在虚拟环境中
1、将当前目录创建为虚拟环境
1)virtualenv . # create a virtualenv directory in the current directory
2)source bin/activate # on unix
2、在虚拟环境中安装pytest:
pip install pytest
python测试模块-pytest介绍的更多相关文章
- python测试框架-pytest
一.pytest 介绍.运行.参数化和数据驱动.Fixture pytest安装与介绍 官网 : pip install -U pytest 查看版本号:pytest --version 为何选择py ...
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- Python测试框架pytest入门基础
Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.T ...
- Python测试模块doctest
面试被问到了却没有用过,很尴尬:今天看了一下,真的是一个很简单的测试模块 方便起见,这里直接拿菜鸟教程的介绍和例子过来 开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试 ...
- Python测试框架pytest命令行参数用法
在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个 序号 类别 中文名 包含命令行参数数量 1 positional arguments 形参 1 2 gene ...
- python paramiko 模块简单介绍
背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...
- 『无为则无心』Python日志 — 64、Python日志模块logging介绍
目录 1.日志的作用 2.为什么需要写日志 3.Python中的日志处理 (1)logging模块介绍 (2)logging模块的四大组件 (3)logging日志级别 1.日志的作用 从事与软件相关 ...
- python numpy 模块简单介绍
用python自带的list去处理数组效率很低, numpy就诞生了, 它提供了ndarry对象,N-dimensional object, 是存储单一数据类型的多维数组,即所有的元素都是同一种类型. ...
- Python datetime模块的介绍
datetime模块常用的主要有下面这四个类:(要清楚import datetime : 导入的是datetime这个包,包里有各种类) 1. datetime.date 用于表示年月日构成的日期 ...
随机推荐
- UOJ278 【UTR #2】题目排列顺序
本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目链接: http://uoj.ac/co ...
- Python的标准GUI:Tkinter的组件
Label组件: Label组件用于显示文本和图像,并且使用双重缓冲 用法: 使用Label组件可以指定想要显示的内容(文本.位图或者图片): from tkinter import * master ...
- Spring MVC的工作原理和机制
Spring MVC的工作原理和机制 参考: springMVC 的工作原理和机制 - 孤鸿子 - 博客园https://www.cnblogs.com/zbf1214/p/5265117.html ...
- C++(六)— 输入方式
1.输入包含空格的字符串 使用 getline(cin, str)读取一行字符串,遇到换行符停止:cin>>str,是遇到空格就停止. 实现:输入两个字符,在第一个字符中删除第二个字符中出 ...
- Linux基本语法
Shell编程 摘要: Shell历史 Shell的作用是解释用户的命令,用户输入一条命令,Shell就解释执行一条,这条方式称为交互式(interactive),Shell还有一种执行命令的方式称为 ...
- Java丨jsoup网络爬虫模拟登录思路解析
直奔主题: 本篇文章是给有jsoup抓包基础的人看的...... 今天小编给大家写一篇对于jsoup抓包时需要输入验证码的解决方法之一.大神就绕道,嘿嘿~ 任何抓包的基础都是基于Http协议来进行这个 ...
- 常规DLL与扩展DLL区别
1.常规DLL可以被各种程序(python,VB等)调用,扩展DLL只能被MFC程序调用.提供给外部使用的控件类只能用扩展DLL. 2.扩展DLL的入口函数是DllMain(),而常规DLL入口是继承 ...
- linux命令学习笔记(61):tree 命令
shendu@shenlan:~$ tree 程序“tree”尚未安装. 您可以使用以下命令安装: sudo apt-get install tree shendu@shenlan:~$ sudo a ...
- popupTheme和theme
popupTheme是指toolBar中弹出的menu的Theme. 那么,如果想让ToolBar的文字是白色,如果你设置Toolbar的Theme是 "ThemeOverlay.AppCo ...
- Nginx+ffmpeg的HLS开源服务器搭建配置及开发详
本文概述: 至目前为止,HLS 是移动平台上非常重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 ,真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋 ...