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 相关文章推荐
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
Python中变量交换的例子
Aug 25 Python
深入浅析Python字符编码
Nov 12 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
自定义django admin model表单提交的例子
Aug 23 Python
Python数据可视化:泊松分布详解
Dec 07 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python openpyxl 插入折线图实例
Apr 17 Python
使用pytorch实现线性回归
Apr 11 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/04/01 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
php获取微信openid方法总结
2019/10/10 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
vue实现图片上传功能
2020/05/28 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python datetime中strptime用法详解
2019/08/29 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
小学见习报告
2015/06/23 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
frg-100简单操作(设置)说明
2022/04/05 无线电