unittest和pytest是Python的2个强大的测试框架,经常用来做UI自动化或接口自动化。unittest是PyCharm的默认集成工具,也是我们大多数人入门自动化的首选框架。pytest提供了更丰富的功能,相对的上手难度也要高一点。如果学了pytest后,想快速用pytest写项目,用于工作实践,那么可以试试我写的这款测试工具:tep
,try easy pytest。
tep简介
在Google中输入python tep
:

tep是一款测试工具,不是测试框架,它做的事情只是帮助你更轻松的使用pytest写项目代码,主要功能如下:
- 项目脚手架
- pytest用例组织
- 输出HTML测试报告
- 基于fixture管理环境变量
- 基于fixture共享公共函数
- 访问MySQL数据库
- 集成常用第三方包
- 登录接口示例代码
工具安装
安装
tep已经上传到了PyPI(Python Package Index):

可以使用pip
命令安装:
外网速度慢,pandas
可能安装失败,推荐用国内镜像:
由于集成了第三方包,安装可能会花几分钟,请耐心等待。
检查
安装完成后,检查是否安装成功:
或者:
升级
使用-U
参数:
或者指定版本:
快速创建项目
tep提供了脚手架,预置了项目结构和代码,打开cmd,使用startproject
命令快速创建项目:

创建后的项目结果如下:

1个文件2处修改完成登录请求
tep已经预置了登录相关代码,只需要打开fixtures\fixture_admin.py
,修改2个地方的代码,就可以完成登录请求。
修改环境变量
编辑fixtures/fixture_admin.py
:
mapping
是个字典,预置了2个环境:qa
和release
,每个环境预置了2个变量:domain
和mysql_engine
。
domain
url = domain +uri
,例如https://qa.com/api/users/login/
的domain是``https://qa.com,uri是
/api/users/login/`。
首先把qa
环境的domain
值改为你的测试域名。
修改登录代码
继续编辑fixtures/fixture_admin.py
:
在# Code your login
处开始修改代码,替换API路径/api/users/login/
和请求参数json
。如果你的登录接口不会返回token,那么修改jmespath.search("token", response.json())
为实际响应取值。
测试登录
打开tests/login_test.py
:
执行后就会调用登录接口发起请求。
编写测试用例
用例组织
测试用例全部放在tests
目录下:

每个.py
模块以test_
前缀或_test
后缀命名,每个test
函数以test
前缀命名。只要遵循这个规则,目录层次不影响。示例:

接口请求设计
每条测试用例可以包含单个或多个接口请求。tep预置了1个POST请求示例代码,打开tests/post_test.py
:
每个请求由5部分组成,从上往下分别是描述、数据、请求、断言和提取。
描述
描述这个请求是干嘛的。
数据
初始化局部变量,例如使用faker库造测试数据。
请求
如果需要打印请求日志,可以from tep.client import request
,tep.client.request
对requests.request
除了记录日志外,没有做任何修改。
也可以直接使用原生request
,from requests import request
。
不同请求方法的代码如下:
断言
断言使用Python标准断言assert 表达式
,表达式跟if
语句表达式一模一样。
提取
推荐使用jmespath
提取JSON数据,也可以使用Python[]
中括号提取。
HTML测试报告
批量执行用例
单个测试用例,在PyCharm中执行就可以了。多个测试用例批量执行,需要打开左下角的Terminal
,输入命令来执行:
只收集不执行
如果只想统计用例条数,不执行代码,那么可以使用以下命令:
HTML测试报告
tep提供了--tep-reports
参数来生成allure测试报告:
报告文件存放在根目录的reports/
中:

右键index.html
选择:

就会打开浏览器显示测试报告了:

自定义环境变量
静态添加
编辑fixtures/fixture_admin.py
,在mapping
字典中# Add your env and variables
处添加环境变量,在# Add properties
处添加属性,参考domain
和mysql_engine
。示例:

动态添加
使用add()
方法动态添加环境变量:
使用环境变量
env_vars
返回了类对象实例,通过.
运算符来使用环境变量:
切换环境
在conf.yaml
文件中配置:
默认为qa
环境。
团队共享公共函数
通过fixture技术,我们可以把重复代码提取出来,在团队间进行复用。tep重度使用了这个技术,在fixtures
目录中,除了预置的fixture_admin.py
,可以继续添加团队成员的fixture:

新添加的fixture_your_name.py
需要到根目录的conftest.py
中注册才能生效:
为了避免命名冲突和代码跟踪,团队成员的公共函数命名建议加上_yourname
后缀。
访问MySQL数据库
首先在fixtures\fixture_admin.py
中修改mysql_engine
:
依次填写主机名、端口、用户名、密码、数据库名。
接着使用pandas来访问数据库,tests\mysql_test.py
预置了示例代码:
返回的数据可以通过data["列名"]["行号"]
的方式读取。
如果想在console中以表格方式显示表数据,可以使用tep.dao.print_db_table()
函数,如:
第三方包集成说明
tep使用了Poetry来管理包和依赖:
目前已集成:
东方说
最早写这个工具的想法是以项目工程方式使用pytest,并结合第三方包完成接口自动化落地。如果你也有类似的想法,那么可以参考tep的做法。tep用户手册是针对于tep工具本身的使用说明,不包含pytest框架搭建和基本使用,如果想入门pytest并深度学习,可以阅读我写的pytest系列文章,共8篇。tep的最新版本是0.5.3
,还不够稳定,也存在bug,我会坚持维护下去,既是实用工具,也是技术沉淀。对tep有任何建议或问题,欢迎公众号后台回复“加群”讨论哦:

常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!