测试入门以及pytest入门

简介: 测试入门以及pytest入门

一、为什么我用了pytest后就会喜欢上它

在使用unittest编写测试用例的时候,需要遵循先创建testclass,测试类继承unittest.TestCase的固定格式。

而pytest不需要,可以直接写def test_XXX()即可,写法是python原生。

pytest就可以大显身手了。

二、setUp与tearDown(pytest中的fixture)个人觉得fixture更灵活

对应unittest下的setUp与tearDown,pytest中的fixture显然更加灵活。可以任意自定义方法函数,只要加上@pytest.fixture()这个装饰器,那么被装饰的方法就可以被使用,如图所示的,为当test_login_success执行结束后,执行退出。fixture的详细使用,会在后面单独拿出来讲。

三、pytest的参数化用起来也更方便

pytest可以更好的参数化,如图所示测试登录失败的场景,这里即是4条测试用例。

四、pytest第三方插件非常丰富

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)

五、兼容unittest

这么好用,还能兼容unittest

六、pytest是什么?

pytest是一款强大的python测试工具,可以胜任各种类型或级别的软件测试工作,及时和开发团队、QA团队、独立的测试小组使用,又适合练习测试驱动开发(TDD)的个人,以及开源团队使用。

比起unittest和nose,pytest会提供更丰富的功能,包括assert重写、第三方插件,以及其他测试工具无法比拟的fixture模型。

此外pytest还有一些优势:

1: 简答的测试可以很简单地编写

2: 复杂的测试也可以很简答地编写

3: 测试的可读性强

4: 易于上手

5: 断言测试失败仅使用原生assert关键字,而不是self.assertEqual(), 或者6: self.assertLessThan()

7: pytest可以运行由unittest和nose编写的测试用例。

七、测试的种类

单元测试:检查一小块代码(比如一个函数,或者一个类)的测试

集成测试:检查大段的代码(比如多个类,或者一个子系统)的测试。集成测试的规模介于单元测试和系统测试之间。

系统测试:检查整个系统的测试,通常要求测试环境尽可能接近最终用户的使用环境。

功能测试:检查单个系统功能的测试。比如一个任务的增、删、改、查。

皮下测试:不针对最终用户界面,而是针对用户界面以下的接口的测试。比如测试API。

第一个测试用例

下面我开始第一个测试用例的编写,首先新建一个项目,然后建一个叫test_one.py的文件,内容如下。

八、第一个测试用例

下面我开始第一个测试用例的编写,首先新建一个项目,然后建一个叫test_one.py的文件,内容如下。

def test_passing():
    assert (1, 2, 3) == (1, 2, 3)

然后进入到项目目录,执行pytest test_one.py命令。

图片.png

简单说一下控制台中的输出内容,第一个行是python版本,pytest版本等包的信息。第二行是运行pytest命令时所在的路径。第三行显示都安装了哪些pytest的插件。第四行,表明选取了多少个测试用例,我们这里是1个。然后空了一行,然后是模块名后跟个‘·’,表示一个测试通过,如果没有通过则是红色的‘F’。

最后一行,绿色的字体,对测试结果的汇总,显示通过了几个测试用例,总共耗时多久。

九、失败的测试用例

让我们添加一个明显的错误测试用例函数,故意让pytest测试失败,看看没通过的是什么样子的。

def test_passing():
    assert (1, 2, 3) == (1, 2, 3)

def test_error():
    assert 1 == 0

图片.png

除了测试结果,还会显示没有用过的测试用例。会明确的告诉你在哪个模块的哪一行出了错误。

十、更详细的输出信息,-v --verbose

在执行pytest时还可以通过添加参数来看到更详细的信息。

图片.png

-v和--verbose:其实都是指代同一个命令,只不过-v是--verbose的简写。

相关文章
|
2月前
|
测试技术 持续交付 开发者
探索自动化测试的无限可能:从入门到精通
在软件开发领域,确保产品质量是至关重要的。自动化测试作为一种高效、可靠的测试方法,正逐渐成为行业标准。本文将带你深入了解自动化测试的世界,从基础概念到实践技巧,帮助你掌握这一强大的工具。无论你是初学者还是有经验的开发者,都能从中获得宝贵的知识和启发。
|
2月前
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
68 2
|
4月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
5月前
|
测试技术 API 数据库
Django测试入门:打造坚实代码基础的钥匙
Django测试入门:打造坚实代码基础的钥匙
51 3
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
96 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
Java 测试技术 Android开发
探索自动化测试的奥秘:从入门到精通
【10月更文挑战第37天】本文将带你进入自动化测试的世界,从基础知识到实战案例,逐步揭示自动化测试的神秘面纱。我们将一起探讨如何利用代码来简化测试过程,提高效率,并确保软件质量。无论你是初学者还是有经验的开发者,这篇文章都能为你提供有价值的见解和技巧。让我们一起踏上这段探索之旅吧!
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
117 1
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
275 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
267 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
53 2