利用tox打造自动自动化测试框架
什么是tox
tox官方文档的第一句话 standardize testing in Python,意思就是说标准化python中的测试,那是不是很适合测试人员来使用呢,我们来看看他究竟是什么?
根据官方文档的解释,tox是一个管理测试虚拟环境的命令行工具,可以支持穿件隔离的python环境,在里面可以安装不同版本的python解释器和项目的各种依赖库,可以进行自动化测试、打包以及持续集成。
tox能做什么

- 创建测试虚拟环境
- 运行静态代码分析与测试工具
- 自动化构建包
- 针对 tox 构建的软件包运行测试
- 检查软件包是否能在不同的 Python 版本/解释器中顺利安装
- 统一持续集成(CI)和基于命令行的测试
怎么配置tox
安装tox
使用pip install tox安装,在命令行执行tox -e envname运行指定的测试环境
tox配置
tox的行为既可以通过命令行来控制也可以通过配置文件进行控制,支持有以下三种形式的配置文件
pyproject.tomltox.inisetup.cfg
# tox (https://tox.readthedocs.io/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# tests suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
envlist = py36
skipsdist = True
# 设置pip源和依赖版本
indexserver =
default = http://mirrors.aliyun.com/pypi/simple/
[testenv]
deps =
pytest
records
pymysql
jinja2
requests
objectpath
arrow
pytest-html
redis
install_command = pip install --trusted-host mirrors.aliyun.com {opts} {packages}
[testenv:dev]
setenv = env = dev
; 告诉tox在每个测试环境里运行pytest
commands = pytest --junitxml=junit-{envname}.xml
;只运行广告相关的测试用例
[testenv:t_a]
setenv = env = dev
commands = pytest -v tests/ad--junitxml=junit-{envname}.xml
;只运行测试环境APP相关测试用例
;只运行APP相关测试用例
[testenv:t_i]
setenv = env = dev
commands = pytest -v tests/ivwen --junitxml=junit-{envname}.xml
[testenv:t1_i]
setenv = env = t1
commands = pytest -v tests/ivwen --junitxml=junit-{envname}.xml
[testenv:pro]
setenv = env = pro
; 通过command line往环境变量里写测试还是线上的标识,config根据标识从环境变量里去读取指定文件
; 或者通过插件的形式,能够配置各个环境的文件,根据命令行参数指定把那个文件放入指定读取目录
command = pytest
[testenv:smoke]
[pytest]
markers =
smoke
get
addopts = -rsxX -l --tb=short --strict
xfail_strict = true
minversion = 3.0
norecursedirs = .* venv src *.egg dist build
testpaths = tests
python_classes = *Test Test* *Suit
junit_family=xunit1
以上配置解释如下:
- [tox]节点是对tox进行配置
envlist指定环境列表,多个环境用逗号隔开,比如py36,py37
skipsdist 指定tox在运行过程中跳过打包环节,因为当前这个项目没有打包的需求,所以这里设置为true,这个和自动化测试框架的设计有关。
indexserver 指定pip的安装源
- [testenv]节点是对测试环境进行配置,这个是根测试环境的配置,下面还可以对不同的测试环境进行配置,都可以继承这个节点
deps 指定项目的python依赖的第三方包
install_command 定义pip安装命令参数
- [testenv:dev]这个节点是定义测试环境,继承根环境配置
setenv 设置环境变量,在项目中可以读取环境变量,从而决定要运行哪个环境的配置,比如tox -e dev,意思就是说在测试环境运行测试用例,tox -e prod在生产环境运行测试用例
commands 指定pytest的运行方式,其他环境的节点配置与此相似。
- [pytest]节点可以对pytest进行配置
- addopts 指定pytest的命令行参数
- xfail_strict 设置预期失败的case如果通过了,则标记为失败
- minversion 指定tox的最小版本
- norecursedirs 指定哪些目录不用递归查找测试用例
- testpaths 指定测试用例的搜索目录
- python_classes 指定测试用例的搜索规则
当然以上的配置只是tox一部分,还有很多,关注官方文档
tox项目实战
下面我们以 tox、pytest打造一个自动化测试框架
项目搭建
新建一个api-auto-test文件夹,在文件夹里添加一个tox.ini文件,输入上面的配置
再分别新建一个src和tests目录,src用于存放封装的一些共有的内容,tests用于存放测试用例
src目录内容如下

ad和biz是对不同业务进行的封装,里面包括接口调用以及数据库相关操作
common是各个业务模块公共的部分,包括请求发送、数据库链接基础操作封装、配置等,主要来看一下config的里的内容:
class Config:
'''公共配置'''
class DevConfig(Config):
'''测试环境配置'''
class ProdConfig(Config):
'''生产环境配置'''
# 环境切换
_MAPPING = {
'dev': DevConfig,
't1': T1Config,
'pro': ProConfig,
}
# 这里根据tox设置的环境变量,来决定使用哪一个环境的配置,从而实现不同环境环境的切换
config = _MAPPING.get(os.getenv("env"), DevConfig)
运行测试用例
tox -e dev


以上是执行过程以及测试结果,会生成junit.xml格式的测试报告,当然也可以使用pytest-html或者其他测试报告,都很方便。
欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!!
利用tox打造自动自动化测试框架的更多相关文章
- 如何利用tox打造自动自动化测试框架,看完就懂
什么是toxtox官方文档的第一句话 standardize testing in Python,意思就是说标准化python中的测试,那是不是很适合测试人员来使用呢,我们来看看他究竟是什么? 根据官 ...
- 打造轻量级自动化测试框架WebZ
一.什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架,基于WebDriver. 设计该框架的初衷是:用自动化测试让测试人员从一些简单却重复的测试中解放出来.之所以用“关键字 ...
- Windows下部署Appium教程(Android App自动化测试框架搭建)
摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...
- webUI自动化测试框架---”pyswat“介绍
webUI自动化测试框架---"pyswat"介绍 大家好我是lamecho 辣么丑,今天给大家介绍一款web自动化测试框架pyswat. "pyswat"是 ...
- Dora.Interception, 一个为.NET Core度身打造的AOP框架[3]:Interceptor的注册
在<不一样的Interceptor>中我们着重介绍了Dora.Interception中最为核心的对象Interceptor,以及定义Interceptor类型的一些约定.由于Interc ...
- Dora.Interception, 为.NET Core度身打造的AOP框架[4]:演示几个典型应用
为了帮助大家更深刻地认识Dora.Interception,并更好地将它应用到你的项目中,我们通过如下几个简单的实例来演示几个常见的AOP应用在Dora.Interception下的实现.对于下面演示 ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
- Web 自动化测试框架 sweetest 介绍
项目开源: https://github.com/tonglei100/sweetest 文章转载:https://segmentfault.com/a/1190000011612061 介绍 swe ...
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
随机推荐
- Linux Systemd 详细介绍: Unit、Unit File、Systemctl、Target
Systemd 简介 CentOS 7 使用 Systemd 替换了SysV Ubuntu 从 15.04 开始使用 Systemd Systemd 是 Linux 系统工具,用来启动守护进程,已成为 ...
- Centos 7使用systemctl补全服务名称
使用jsw将程序打包成服务后,发现不能使用service + 服务名前几个字母 + tab 快捷键补全服务名,但是tab键可以补全文件夹名,翻阅了各个文档后,最终还是找到了问题所在. 本人安装的是Ce ...
- Struts2 自定义拦截器时Action无法接收到参数
问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultS ...
- 08.利用Easymock测试简单的servlet
1.首先导入需要使用的servlet的jar包 接下来我们编写一个登陆的servlet package com.fjnu.service; import java.net.HttpRetryExcep ...
- JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...
- 深入理解React:事件机制原理
目录 序言 DOM事件流 事件捕获阶段.处于目标阶段.事件冒泡阶段 addEventListener 方法 React 事件概述 事件注册 document 上注册 回调函数存储 事件分发 小结 参考 ...
- 05【掌握】 SpringBoot 清空Redis所有缓存
package top.yangbuyi.system.controller; import org.springframework.beans.factory.annotation.Autowire ...
- Oracel中coalesce函数的用法
1.coalesce函数的用法 1.1 取出第一个不为空的列的数据.
- ajax前后端交互原理(5)
5.ajax简介 5.1.什么是ajax Asynchronous JavaScript and XML ,异步的javascript和XML 5.2.使用ajax有什么用 数据交互,可以从服务器获取 ...
- Tomcat的介绍
Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. 支持Se ...