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的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
Python算法应用实战之栈详解
Feb 04 Python
Python实现自动登录百度空间的方法
Jun 10 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
Django实现学员管理系统
Feb 26 Python
python3人脸识别的两种方法
Apr 25 Python
python2 对excel表格操作完整示例
Feb 23 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
进一步理解Python中的函数编程
2015/04/13 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Python wordcloud库安装方法总结
2020/12/31 Python
最新大学生自我评价
2013/09/24 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
故宫英文导游词
2015/01/31 职场文书
爱心募捐通知范文
2015/04/27 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
python for循环赋值问题
2021/06/03 Python