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数据结构之Array用法实例
Oct 09 Python
Python读取环境变量的方法和自定义类分享
Nov 22 Python
python实用代码片段收集贴
Jun 03 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
python实现一个猜拳游戏
Apr 05 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
keras:model.compile损失函数的用法
Jul 01 Python
详解Python高阶函数
Aug 15 Python
使用python如何删除同一文件夹下相似的图片
May 07 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
js微信分享实现代码
2020/10/11 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python实现简易内存监控
2018/06/21 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
计算机应用职专应届生求职信
2013/11/12 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
加油口号大全
2014/06/13 职场文书
写给父母的感谢信
2015/01/22 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript