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

原文地址:https://www.cnblogs.com/potato-chip/p/9092517.html

时间: 2024-07-30 19:16:12

python测试模块-pytest介绍的相关文章

Python测试模块——nose

以下内容翻译自nose官方文档,因为水平有限,难免会有错误.... nose是Python平台的一个测试工具,相信用Python开发过的人都知道unittest,nose比unittest更加强大,也更加好用(注:我没有用过unittest...我还是小白....) nose使用的tests是unittest.TestCase的子类,当然你也可以自己写一些简单的测试函数以及测试类,而不一定要是unittest.TestCase的子类. 使用nose运行测试是很简单的,只要遵循简单规则来组织你的库

Python datetime模块的介绍

datetime模块常用的主要有下面这四个类:(要清楚import datetime : 导入的是datetime这个包,包里有各种类) 1. datetime.date   用于表示年月日构成的日期 2. datetime.time   用于表示时分秒微妙构成的一天24小时中的具体时间 3.  datetime.datetime   上面两个合在一起  既包含时间有包含日期 4.  datetime.timedelta   用来创建时间间隔对象,用于加减时间 一.首先着重写一下datetime

python os模块详细介绍

Python测试框架之unittest和pytest

目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架,着重解决运行效率低的问题.最近调研了一下另一种主流测试框架Pytest,Pytest是一个非常成熟的全功能的Python测试框架,本文主要对比了Unittest和Pytest这两种较为流行的Python测试框架. 一.Unittest Unittest是Python标准库中自带的单元测试框架,Un

实战篇一 python常用模块和库介绍

# [email protected] coding: utf-8 [email protected] -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = {1:2, 3:4, "55":"66"} # test json.dumps print type(dict_), dict_ json_str = json.dumps(dict_) print "js

python nose测试框架全面介绍六--框架函数别名

之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.package中写在__init__.py中的函数 setup_package 用setup, setUp, or setUpPackage也可以 teardown_package 用teardown, tearDown, or tearDownPackage也可以 2.函数形式组成的用例 setup_

python nose测试框架全面介绍七--日志相关

引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的报告只有错误提示,没有日志,查看nose的官网,nose默认支持将日志显示的,如下: 脚本如下: #coding:utf-8 ''' Created on 2016年6月22日 @author: huzq ''' import logging from test_case import new fr

Python中模块使用及面向对象介绍

1.模块使用 模块: 模块式pyth1.on组织代码的基本方式 一个python脚本可以单独运行,也可以导入另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module) 所有的点p为文件都可以作为一个模块导入 模块名与脚本的文件名相同,例如我们编写了一个名为hello.pv的脚本则可以在另一个脚本中用import hello.py来导入它 包: python的模块可以按目录组织为包 创建一个包的步骤: 创建一个名字为包名字的目录,在该目录下创建一个__init__.py文件,根据需要在

python中关于不执行if __name__ == '__main__':测试模块的解决

1.新建测试脚本文件: 2.编辑测试脚本 import unittest import requests import json import HTMLTestRunner ur1 = 'http://118.178.247.67:8081/systLogonUser/adminLogon.do' headers = {'Content-Type':'application/x-www-form-urlencoded','Referer':'118.178.247.67'} data = { '