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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
python使用sorted函数对列表进行排序的方法
Apr 04 Python
Python列表删除的三种方法代码分享
Oct 31 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
Python有参函数使用代码实例
Jan 06 Python
在Python中通过threshold创建mask方式
Feb 19 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
python实现画图工具
Aug 27 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 include_path设置技巧分享
2011/07/03 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP编写简单的App接口
2016/08/28 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python导出DBF文件到Excel的方法
2015/07/25 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
怎样写演讲稿
2014/01/04 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年话务员工作总结
2014/11/19 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
《三国志》赏析
2019/08/27 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
python获取字符串中的email
2022/03/31 Python
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技