python单元测试之pytest的使用


Posted in Python onJune 07, 2021

一、前提准备

1、前提:需要安装pytest和pytest-html(生成html测试报告)

pip install pytest 和 pip install pytest-html 

安装插件:pip install 插件名

2、命名规范

 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨

Pytest: setup, setup_class 和 teardown, teardown_class 函数 ( 和 unittest 执行效果一样 ) 运行于测试方法的始末,即 : 运行一次测试函数会运行一次 setup 和 teardown 运行于测试方法的始末 , 但是不管有多少测试函数都只执行一次 setup_class 和 teardown_class

二、pytest生成自带的html测试报告

前提条件:需要下载pytest-html模块(python自带的生成测试报告模块)

pip install pytest-html

如果不安装pytest-html会报:

python单元测试之pytest的使用

案例: 1)

pytest.main("模块.py")【运行指定模块下,运行所有test开头的类和测试用例】 

 pytest.main(["--html=./report.html","模块.py"])

import pytest
class Test():
    def test1(self):
        print("这是测试1")
    def test1(self):
        print("这是测试2")
if __name__ == '__main__':
    pytest.main(["--html=./report.html", "test_004.py"])

结果:

python单元测试之pytest的使用

python单元测试之pytest的使用

2)运行指定模块指定类指定用例,冒号分割,并生成测试报告

pytest.main([‘--html=./report.html',‘模块.py::类::test_a_001'])

import pytest
class Test():
    def test1(self):
        print("这是测试1")
    def test2(self):
        print("这是测试2")
if __name__ == '__main__':
    pytest.main(["--html=./report.html", "test_004.py::Test::test1"])

结果:

python单元测试之pytest的使用

3)直接执行pytest.main() 【自动查找当前目录下,以test 开头的文件或者以test结尾的py文件】

pytest.main([‘--html=./report.html'])

语句: pytst.main(['-x','--html=./report.html','t12est000.py'])

-x出现一条测试用例失败就退出测试
-s:显示print内容

三、pytest运行方式

. 点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error

四、allure  

Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成  

1、Allure常用的几个特性

@allure.feature # 用于描述被测试产品需求

@allure.story # 用于描述 feature 的用户场景,即测试需求

with allure.step (): # 用于描述测试步骤,将会输出到报告中

allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等

案例1:关于pytest与Allure生成html测试用例 rr.csv

2,3,5
5,6,11

readCsv

import csv  # 导入csv模块
 
 
class ReadCsv():
    def read_csv(self):
        item = []  # 定义一个空列表
        c = csv.reader(open("../dataDemo/rr.csv", "r"))  # 得到csv文件对象
        for csv_i in c:
            item.append(csv_i)  # 将获取的数据添加到列表中
        return item
 
 
r = ReadCsv()
print(r.read_csv())

开发代码:

class Cale():
    def jia(self,a,b):
        c=a+b
        return c
    def jian(self,a,b):
        c=a-b
        return c
    def cheng(self,a,b):
        c=a*b
        return c
    def chu(self,a,b):
        c=a/b
        return c

生成html代码:

import pytest
from pytest01.readDemo.readCsv import ReadCsv
from pytest01.demo.cale import Cale
import os
import allure
r=ReadCsv()
cc=r.read_csv()
d=Cale()
class Test():
    @allure.story("加法函数测试正确")
    def test001(self):
        for i in cc:
            dd=d.jia(int(i[0]),int(i[1]))
            assert dd==int(i[2])
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'test_02.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

python单元测试之pytest的使用

python单元测试之pytest的使用

到此这篇关于python单元测试之pytest的使用的文章就介绍到这了,更多相关pytest的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用Python编写分析Python程序性能的工具的教程
Apr 01 Python
python中self原理实例分析
Apr 30 Python
Python3读取zip文件信息的方法
May 22 Python
浅析Python 中整型对象存储的位置
May 16 Python
python中reload(module)的用法示例详解
Sep 15 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
python实例化对象的具体方法
Jun 17 Python
你需要掌握的20个Python常用技巧
Feb 28 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
Python趣味实战之手把手教你实现举牌小人生成器
怎么用Python识别手势数字
利用python调用摄像头的实例分析
Jun 07 #Python
python通过opencv调用摄像头操作实例分析
Jun 07 #Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 #Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 #Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 #Python
You might like
php实现mysql同步的实现方法
2009/10/21 PHP
两个php日期控制类实例
2014/12/09 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
js数组去重的hash方法
2016/12/22 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
vue中SPA单页面应用程序详解
2017/11/07 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
详解Python中DOM方法的动态性
2015/04/11 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python实现简单猜单词游戏
2020/12/24 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
华三通信H3C面试题
2015/05/15 面试题
销售经理竞聘书
2014/03/31 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python