前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest的简单应用

Pytest的简单应用

作者头像
软件测试君
发布2019-09-03 18:03:01
7310
发布2019-09-03 18:03:01
举报
文章被收录于专栏:测试人生测试人生
一、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实例

运行实例 运行原则:在不指定运行目录,运行文件,运行函数等参数的默认情况下,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 程序会自动执行testpytest01.py testpytest01.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("发送邮件失败!!!")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Pytest介绍
  • 1、特性:
  • 2、常用拓展
  • 二、Pytest安装
  • 三、Pytest实例
  • 四、Pytest生成HTML测试报告
  • 五、Pytest邮件发送测试报告
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档