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中的条件判断语句
May 14 Python
python调用百度语音识别api
Aug 30 Python
Django中ORM外键和表的关系详解
May 20 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
python构建指数平滑预测模型示例
Nov 21 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
keras 如何保存最佳的训练模型
May 25 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
Python如何向SQLServer存储二进制图片
Jun 08 Python
python 数据类型强制转换的总结
Jan 25 Python
Python实现DBSCAN聚类算法并样例测试
Jun 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
对Session和Cookie的区分与解释
2007/03/16 PHP
Views rows style模板重写代码
2011/05/16 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
python爬虫使用cookie登录详解
2017/12/27 Python
基于python实现文件加密功能
2020/01/06 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
机电专业求职信
2014/06/14 职场文书
节约用电标语
2014/06/17 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书