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计算书页码的统计数字问题实例
Sep 26 Python
python生成器generator用法实例分析
Jun 04 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
分析Python中解析构建数据知识
Jan 20 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
Softmax函数原理及Python实现过程解析
May 22 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
python statsmodel的使用
Dec 21 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的引用原因分析
2012/09/06 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
layui分页效果实现代码
2017/05/19 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python 内置函数complex详解
2016/10/23 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
青年志愿者先进事迹
2014/05/06 职场文书
龙猫观后感
2015/06/09 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
2016年国培研修日志
2015/11/13 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript