ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest快速入门(1)--pytest与unittest的比较总揽

2021-05-19 20:32:56  阅读:165  来源: 互联网

标签:收集 -- unittest py pytest 测试用例


在掌握使用unittest进行接口测试的流程后,接下来我们将学习如何使用pytest进行接口测试。

首先我们回顾一下使用unittest进行接口测试的流程化:

1、编写测试用例 -- 需要继承unittest.TestCase类

2、收集测试用例 -- unittest.TestLoder().discover(case_path)    其中case_path表示待收集测试用例的路径

3、执行测试用例并生成测试报告  -- HtmlTestRunner or BeautifulReport

pytest在进行接口自动化测试时,其操作流程与unittest测试基本一致,都是通过python代码来编写测试用例、收集用例、运行用例、生成报告,但是pytest在操作上更加灵活。下面我们将对比着进行pytest的学习。

一、pytest安装

pip install pytest

二、pytest与unittest的比较

1、在编写测试用例方面

unittest:

(1)编写的测试类必须继承unittest.TestCase类

(2)类名必须为TestXXX、方法名称必须为test_xxx

pytest:

编写的测试类无需继承,但是类名也必须为TestXXX、方法名称也必须为test_xxx

2、在前置后置上

unittest:setup/teardown、setupClass/teardownClass

pytest:

【方案一】继续沿用unittest的风格  -- 了解即可

 (1)用例级别:setup/teardown  -- 类和类外的用例均可使用

 (2)类级别:setup_class/teardown_class

 (3)模块级别:setup_module/teardown_module

【方案二】使用fixture -- 掌握

 fixture的使用比较灵活,将会在后面的章节进行详细介绍。

3、断言

unittest:self.assertxxx()

pytest:assert 表达式  

4、收集测试用例和执行测试用例

由于测试用例一般分散在多个文件当中,因此我们在执行测试用例时,需要对测试用例进行收集

unittest:unittest.TestLoder().discover(case_path) -- 收集的测试用例存放在套件当中,需要调用方法进行执行;

pytest:

 (1)无需编写任何代码去收集测试用例 -- 自动收集/发现测试用例

 (2)执行测试用例时,自动收集测试用例。

 (3)测试用例的执行需要在命令行调用pytest命令: pytest [参数]

4.1、pytest是如何自动收集测试用例的?

 (1)目录:pytest一般是从rootdir下开始搜索用例,其中rootdir(根目录)一般是pytest在哪个目录下运行,就以哪个目录作为rootdir;

 (2)文件名:py文件命名符合test_xxx.py或者xxx_test.py的文件一般用于存放测试用例;

 (3)函数以及类下的方法:

  函数以test_开头进行命名;

  命名以Test开头的类下的test_xxx方法。

4.2、如何执行测试用例?

【方式一】命令行输入:pytest -s -v

【方式二】:使用main.py文件

 pytest.main([命令行参数])

4.3、测试用例的执行顺序?

 (1)py文件按ASCII的先后循序进行执行;

 (2)py文件内部的函数:按测试用例的书写的先后顺序进行执行

5、生成测试报告

unittest: HtmlTestRunner、BeautifulReport

pytest:

 需要使用html插件:pip install pytest-html

 测试报告的页面显示需要安装allure插件

【说明】

allure的具体操作流程,可以参考官方文档以及相应的博客,地址如下:

官方文档:https://docs.pytest.org/en/stable/
pytest+allure集成:https://www.cnblogs.com/Simple-Small/p/11512337.html
pytest文章:https://www.cnblogs.com/Simple-Small/tag/pytest/

标签:收集,--,unittest,py,pytest,测试用例
来源: https://www.cnblogs.com/yif930916/p/14786136.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有