测试入门以及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的简写。

相关文章
|
3月前
|
存储 设计模式 测试技术
怎么基于Pytest+Requests+Allure实现接口自动化测试?
该文介绍了一个基于Python的自动化测试框架,主要由pytest、requests和allure构成,采用关键字驱动模式。项目结构分为六层:工具层(api_keyword)封装了如get、post的请求;参数层(params)存储公共参数;用例层(case)包含测试用例;数据驱动层(data_driver)处理数据;数据层(data)提供数据;逻辑层(logic)实现用例逻辑。代码示例展示了如何使用allure装饰器增强测试报告,以及如何使用yaml文件进行数据驱动。
105 0
|
1月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
2月前
|
测试技术 API 数据库
Django测试入门:打造坚实代码基础的钥匙
Django测试入门:打造坚实代码基础的钥匙
34 3
|
14天前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
45 6
基于Python访问Hive的pytest测试代码实现
|
5天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
18天前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
1月前
|
前端开发 关系型数据库 测试技术
django集成pytest进行自动化单元测试实战
在Django项目中集成Pytest进行单元测试可以提高测试的灵活性和效率,相比于Django自带的测试框架,Pytest提供了更为丰富和强大的测试功能。本文通过一个实际项目ishareblog介绍django集成pytest进行自动化单元测试实战。
29 3
django集成pytest进行自动化单元测试实战
|
1月前
|
NoSQL Java Linux
Redis6入门到实战------ 六、Redis_Jedis_测试
这篇文章介绍了如何使用Jedis客户端连接Redis,并进行基本的数据类型操作测试,包括字符串、列表、集合、哈希和有序集合的相关API使用示例。
Redis6入门到实战------ 六、Redis_Jedis_测试
|
1月前
|
Java 测试技术 API
Java 新手入门:Java单元测试利器,Mock详解
Java 新手入门:Java单元测试利器,Mock详解
90 1
|
1月前
|
测试技术 开发者
软件测试的艺术:从入门到精通
在数字化时代的浪潮中,软件已成为我们日常生活和工作不可或缺的一部分。然而,高质量的软件并非偶然产生,它背后隐藏着一门科学——软件测试。本文将深入浅出地探讨软件测试的基本原则、方法和技术,旨在为初学者提供一个清晰的学习路径,同时为经验丰富的测试人员提供一些深入的思考和启示。无论你是软件开发者还是测试工程师,这篇文章都将为你打开一扇通往高质量软件世界的大门。
41 2