Pytest(1)安装与入门[通俗易懂]

Pytest(1)安装与入门[通俗易懂]pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

pytest介绍

pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 能够支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  5. 支持重复执行(rerun)失败的 case
  6. 支持运行由 nose, unittest 编写的测试 case
  7. 可生成 html 报告
  8. 方便的和持续集成工具 jenkins 集成
  9. 可支持执行部分用例
  10. 具有很多第三方插件,并且可以自定义扩展
     

安装pytest

一般接触一个新的框架,个人推荐使用virtualenvwrapper这个虚拟环境,使得环境独立
有关virtualenvwrapper的安装与使用后续再出文章,这里可自行百度

终端运行

(pytest_env) ➜  ~ pip3 install pytest

查看版本

(pytest_env) ➜  ~ pytest --version             

 

快速开始

# test_sample.py 的内容 
def func(x):
  return x + 1


def test_answer():
  assert func(3) == 5


class TestClass(object):
  def test_one(self):
    x = "this"
    assert 'h' in x

  def test_two(self):
    x = "hello"
    assert hasattr(x, 'check')

然后进入当前目录,执行命令pytest

> pytest

============================================= test session starts =============================================
platform darwin -- Python 3.7.6, pytest-6.2.1, py-1.10.0, pluggy-0.13.0
rootdir: /Users/jkc/PycharmProjects/pytestDoc
plugins: allure-pytest-2.8.6
collected 3 items                                                                                             

test_example.py F.F                                                                                     [100%]

================================================== FAILURES ===================================================
_________________________________________________ test_answer _________________________________________________

    def test_answer():
>     assert func(3) == 5
E     assert 4 == 5
E      +  where 4 = func(3)

test_example.py:16: AssertionError
_____________________________________________ TestClass.test_two ______________________________________________

self = <test_example.TestClass object at 0x7fe3e6ff7990>

    def test_two(self):
      x = "hello"
>     assert hasattr(x, 'check')
E     AssertionError: assert False
E      +  where False = hasattr('hello', 'check')

test_example.py:26: AssertionError
=========================================== short test summary info ===========================================
FAILED test_example.py::test_answer - assert 4 == 5
FAILED test_example.py::TestClass::test_two - AssertionError: assert False
========================================= 2 failed, 1 passed in 0.04s =========================================

 

知识点

  • 如果只执行 pytest ,会查找当前目录及其子目录下以test__*.py或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数或者Test开头的类并执行(当然,后续也可以自定义规则)
  • 如果只想执行某个文件,可以pytest start.py
  • 加上-q,就是显示简单的结果:pytest -q start.py

 

Pytest用例的设计原则

用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的

  • 文件名以 test_*.py 文件和*_test.py
  • 以 test_ 开头的函数
  • 以 Test开头的类,不能包含__init__方法
  • 以 test_ 开头的类里面的方法
  • 所有的包 pakege 必项要有__init__.py 文件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165673.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellj idea 2021激活码【最新永久激活】

    (intellj idea 2021激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWNlbnNlSWQi…

    2022年3月26日
  • jquery正则表达式验证邮箱_正则表达式如何判断邮箱

    jquery正则表达式验证邮箱_正则表达式如何判断邮箱我的代码一开始如下:然后我的表单就一直没法成功调用这个函数,后面我发现,这里的跟java的不一样,reg里的正则表达式必须得用’/’,双引号赋值它不识别,还有下面调用test函数,上面if语句里面验证邮箱是否正确,用的email.test(reg),它打开网页还是没有提示。得像下面这个才能正常调用test。…

    2022年9月20日
  • Rancher Fleet使用教程

    Rancher Fleet使用教程Rancherfleet介绍https://fleet.rancher.io/https://github.com/rancher/fleet博客截止日期为:20201204当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;有一些官方文档说的不清楚的地方,在这篇博客中进行了完善;fleet是一个轻量级的gitops工具,不管是管理单个集群还是大量集群都有很好的性能;两段pull工作模式:Fleetmanagerpullfr

    2022年6月14日
  • java中import是什么意思_java中import关键字是什么意思「建议收藏」

    java中import是什么意思_java中import关键字是什么意思「建议收藏」import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中,比如工具包,实体包。那么,你在a包中的A类,希望调用b包中的B类,就需要导入b包。import关键字使用1、显示导入指定包下的类或者接口importjava.util.Scanner;2、写在包的声明和源文件之间packa…

    2022年7月20日
  • 基于Spring Cloud项目实战

    (2018年10月2日,从git上移到这里)通过案例学习了基于Springcloud进行web微服务项目的开发,干货很多。Springcloud体系提供了完整的微服务开发的解决方案,整合了多个优秀组件,能够很好的帮助我们提高开发效率。在此做以下总结。SpringCloud简介SpringCloud是一个基于SpringBoot实现的微服务架构开发工具。它…

    2022年4月6日
  • win10安装vs2008失败1935_LTE切换失败的解决方案

    win10安装vs2008失败1935_LTE切换失败的解决方案今天刚升级了WIN10系统,重新安装VS2008(项目需要),但是点击安装程序后,出现此应用程序需要.NET3.5(包括.NET2.0和3.0),如图:如果你选择“下载并安装此功能。Windows将从Windows更新中获取所需的文件并完成安装”,那么你就耐心等吧,下载的速度奇慢。现在讲解一下一种无需在线下载,只需要有Win10ISO文件即可本地安装.NETFramework3.5的方…

    2022年9月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号