Pytest的简单应用

一、Pytest介绍

Pytest是基于python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。

1.特性:

  • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  • 能够支持简单的单元测试和复杂的功能测试
  • 支持参数化
  • 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败
  • 支持重复执行失败的case
  • 支持运行由nose, unittest编写的测试case
  • 具有很多第三方插件,并且可以自定义扩展
  • 方便的和持续集成工具集成

2.常用拓展

  • pytest-selenium(集成selenium)
  • pytest-html(生成html格式的测试报告)
  • pytest-rerunfailures(失败case重复执行)
  • pytest-xdist(多CPU分发)

二、Pytest安装

1.在IDE中安装(这里以PyCharm为例)



 

2.使用命令进行安装

pip install -U pytest 
pip install -U pytest-html
pip install -U pytest-rerunfailures

 

3.验证安装结果

 

三、Pytest实例

 

1.运行实例

运行原则:在不指定运行目录,运行文件,运行函数等参数的默认情况下,pytest会执行当前目录下的所有以test_为前缀(test_*.py)或以_test为后缀(*_test.py)的文件中以test_为前缀的函数
pytest会找当前以及递查找子文件夹下面所有的test_*.py或*_test.py的文件,把其当作测试文件
在这些文件里,pytest会收集下面的一些函数或方法,当作测试用例
不在类定义中的以test_开头的函数或方法
在以Test开头的类中(不能包含__init__方法),以test_开头的方法
①新建一个python文件:test_shili01

def func(x):
    return x + 1

def test_func1():
    assert func(4) == 5 # 成功示例
 
def test_func2():
    assert func(3) == 5 # 失败示例

②运行,右键选择“Run py.test”

③运行结果:会给出成功和失败的提示,失败提示,会给出用例失败描述,包括执行失败的位置和原因,便于查找和定位
test_func2()运行失败的原因就是不符合我们设定的断言(4 == 5)

四、Pytest生成HTML测试报告

1.调用pytest.main(),来组织要执行的用例

2.通过设定参数,来指定测试报告的格式,文件名,路径(默认为测试脚本所在目录)

3.运行pytest01.py

程序会自动执行test_pytest01.py   test_pytest01.py   test_pytest01.py 中的测试类和测试函数
并将测试执行的结果,写入指定的测试报告中

4生成测试报告

包含成功和失败的测试用例执行结果,默认全部展示
成功用例:输出测试函数的指定输出内容
失败用例:输出异常以及错误信息

五、Pytest邮件发送测试报告

 

1.执行完测试用例,生成测试报告之后,可以通过邮件的方式,将测试报告发送通知相关人员

2.HTML格式的测试报告,可以作为邮件的正文放在邮件当中(可能会有部分格式的丢失)

3.测试报告,也可以作为附件的方式放在邮件中(格式不会受到影响,但是阅读不太方便)

4.python3 发送HTML内容的邮件源码

import smtplib
from email.mime.text import MIMEText
from email.header import Header


sender = 'XXX@163.com'
receiver = 'XXX@qq.com'
smtpserver = 'smtp.163.com'
username = 'XXX'
password = 'XXX'


# 邮件主题
mail_title = '主题:测试报告3'


# 读取html文件内容
f = open('report_test.html', 'rb')
mail_body = f.read()
f.close()


# 邮件内容, 格式, 编码
message = MIMEText(mail_body, 'html', 'utf-8')
message['From'] = sender
message['To'] = receiver
message['Subject'] = Header(mail_title, 'utf-8')


try:
    smtp = smtplib.SMTP()
    smtp.connect('smtp.163.com')
    smtp.login(username, password)
    smtp.sendmail(sender, receiver, message.as_string())
    print("发送邮件成功!!!")
    smtp.quit()
except smtplib.SMTPException:
    print("发送邮件失败!!!")

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值