在掌握使用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/