接口自动化:1. pytest----环境搭建
出处:https://www.cnblogs.com/yoyoketang/p/9356693.html
前言:
python鄙视链:pytest 鄙视 > unittest 鄙视 > robotframework 鄙视 > 记流水账 鄙视 > "hello world"小白
所以,让我们一起学习pytest吧。
pytest简介:
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行(rerun)失败的case
- 支持运行由nose, unittest编写的测试case
- 可生成html报告
- 可支持执行部分用例
- 可和selenium,requests,appium实现web,接口,app自动化
- 可和allure插件结合生成没关的测试报告以及和jenkins结合实现持续继承
- 有很多强大的插件--pytest pytest框架;pytest -html 生成html报告; pytest -xdist 多线程插件; pytest -ordering 控制测试用例的执行顺序; pytest -rerunfailures 失败冲泡; pytest -allure 生成美观的测试报告【一次性安装所有插件,将插件写成txt中放在代码根目录,执行pip install -r 文件名.txt】
一、pytest安装:
1. pip install -U pytest
2. pip show pytest查看安装版本
3. 也可以pytest -version查看安装的版本
二、快速入手
----运行第一个简单的函数
ok,如上环境安装成功了。下面通过具体的案例来入手吧。我们先编写一个简单的函数,通过pytest执行或者pytest -q 脚本名,指定脚本来执行。
从上面的截图可以看出,第一个执行断言失败,第二个执行断言成功。
----运行多个函数
在一个包中,或者说一个模块的文件中,它是有多个文件的,比如一个包中,pytest它是执行多个以test开头的模块脚本,我们先来看这种情况,在一个包中定义两个模块脚本,分别是test_first.py和test_second.py,如下图:
----运行类中的函数
通过执行pytest可以执行模块中的函数或者类中的方法,那么我们就来实现执行类中的测试函数,如下图:
-------踩坑了。在之后的学习中,发现test_class.py这个脚本中的类函数无法使用setup_class和teardown_class。原因是以上的代码其实是unittest的脚本,搞混了。下面更改一个pytest调用类函数的脚本。
三、总结
通过以上的三个练习,我们大致了解pytest的用例规则了吧。
1. 测试脚本名以test_开头(或以_test结尾也可以)[模块名]
2. 测试脚本中若是执行函数,以test_开头【类中的执行函数名】
3. 测试脚本中若是执行一个类中的函数,测试类以Test开头,并且不能带有init方法【类名】
4. 断言使用assert
5. 执行文件下所有的测试脚本,命令为pytest【cd到对应文件下执行】 或者 pytest 文件名/
6. 执行文件下指定的测试脚本,命令为pytest -q 指定测试脚本名称【cd到对应文件下执行】 或者 pytest 文件名/脚本名
敲黑板:
pytest -s 脚本名 用例执行详细情况
pytest -x 脚本名 遇到错误时停止测试
pytest --maxfail= num 当用例错误个数达到指定数量时,停止测试
pytest -h 查看pytest帮助
运行方式--
1. 命令行模式:输入pytest运行即可
参数:
-vs -v输出更详细的信息 -s标识输出调试信息
-n 多线程运行测试用例
--reruns 失败用例重跑
--html 生成html测试报告
2. 主函数模式
import pytest
if __name__ == '__main__':
pytest.main()
3. 结合pytest.ini的配置文件运行