【Python自动化测试环境管理】tox
1. tox基本介绍
1.1 tox是什么?
tox 是一个用于管理 Python 项目的自动化测试和环境管理工具。它的主要功能是创建虚拟环境并运行项目的测试套件,tox能够让我们在同一个Host上自定义出多套相互独立且隔离的python环境,每套虚拟环境中可能使用了不同的 Python 拦截器/环境变量设置/第三方依赖包,tox 最典型的应用就是用于测试 Python 程序的兼容性,tox是openstack社区最基本的测试工具,比如python程序的兼容性、UT等,以确保项目在不同环境下的稳定性和一致性。
目标:提供最先进的自动化打包,测试和发布功能
- 作为持续集成服务器的前端,大大减少测试所需时间
- 检查软件包能否在不同的python版本下正常安装
- 在不同版本的python环境下运行测试代码
1.2 tox能做什么?
- 创建虚拟环境:Tox 可以自动创建虚拟环境并运行项目的测试套件,确保项目在不同环境下的兼容性。
- 验证多python版本的兼容性:Tox 可以在多个 Python 版本下运行项目的测试,从而确保项目的跨版本兼容性。
- 运行单元测试:您可以配置 Tox,使其能够运行自定义的测试命令、代码风格检查、文档生成等任务。
- 检查代码风格:Tox 可以配置静态代码分析工具,如 Flake8、Pylint 等,帮助开发者规范代码风格。
- 集成化:Tox 可以与其他测试工具和持续集成系统(例如 Jenkins、Travis CI 等)集成,使得测试结果能够轻松地与团队共享和管理。
- 简化测试流程:Tox 可以简化项目的测试流程,减少开发人员在测试环境配置和管理上的工作量。
1.3 tox安装
pip install tox
'''
安装过程中需要提前安装的一些依赖包
yum install python-devel
yum install libffi-devel
yum install openssl-devel
yum install gcc
yum install gcc-c++
'''
2. tox配置文件详解
一个典型的tox配置文件示例:
# --------------------------------------------全局配置-------------------------------------------------
[tox]
envlist = py37, py38, lint
requires =
# 用法1:指定特定的python包及版本
tox>=4
requests>=2.25
numpy==1.19.3
# 用法2:指定额外的软件依赖
pytest
flake8
# 用法3:指定从外部软件包清单文件安装, 如下:使用-r参数指定从requirements.txt文件中读取依赖项列表进行安装
-rrequirements.txt
# 指示tox是否跳过创建源纷纷包(sdist),某些情况下,不需要生成分发包(如:只进行测试时)
skipsdist = True
# 指定tox的最低版本要求
minversion = 1.6
# 指定Python包索引服务器
indexserver =
default = https://pypi.doubanio.com/simple
# ---------------------------------------通用环境配置----------------------------------------------
[testenv]
# 指定是否以开发者模式安装包,开发者模式下安装包便于调试
usedevelop = true
# 指定是否跳过安装依赖项的步骤
skip_install = false
# 用于指定虚拟机环境使用的python版本
basepython = python3.8
# 指定哪些环境变量可以被传递到tox创建的测试环境中,如下示例:通过如下配置,测试脚本test_script.py需要使用环境变量DATABASE_URL来连接数据库进行测试
passenv = DATABASE_URL
# 指定测试环境中要安装的依赖包
deps =
pytest
requests
# 在测试运行时设置特定的环境变量
setenv = TEST_ENV=1
# 在测试命令执行之前运行的命令
# commands_pre = echo "Starting tests..."
# 定义在测试环境中要运行的命令
commands =
# 场景示例1:运行测试
pytest tests/
# 场景示例2:PEP8代码风格检查
flake8 tests/
# 场景示例3:检查测试覆盖率
coverage run -m pytest
# 场景示例4:在测试之前构建项目
python setup.py install
# 场景示例5:运行自定义shell或python脚本
./run_custom_tests.sh
# 场景示例6:TypeHint检查
mypy /src
# 在测试命令执行之后运行的命令
commands_post = echo "Tests completed."
# 测试环境可调用的外部命令白名单
# 示例1:表示允许测试环境中条用任何外部命令
whitelist_externals = *
# 示例2:表示只允许cp和rm命令执行,其他命令不允许
whilelist_externals =
cp
rm
# 用于指定在安装测试环境时执行的自定义安装命令,默认情况下,tox会使用pip来安装项目的依赖项,但如果指定了install_command参数,则会执行install_command中定义的命令
install_command = pip install -U {opts} {packages}
# --------------------------------------特定环境配置------------------------------------------
# 一下testenv:py37表示一个特定的测试环境配置部分,它是基于通用的[testenv]配置的,这种方式可以为特定的测试环境定义特定的行为,而不会影响其他测试环境的配置
[testenv:py37]
basepython = python3.7
deps =
pytest
requests
commands =
pytest tests/
# 以下环境名称lint是一个通用术语,用于指代各种代码静态分析工具
[testenv:lint]
deps = flake8
commands = flake8 your_project/
setenv =
LINT_ENV=development
# pytest测试框架配置
[pytest]
addopts = --verbose --maxfail=1
# 配置专门用于测试代码覆盖率的测试环境
[coverage]
run = coverage run -m pytest
report = coverage report -m
3. tox内置变量
- {toxinidir}:tox.ini 文件所在的目录路径。
- {env}:当前测试环境的名称。
- {envdir}:当前测试环境的虚拟环境目录路径。
- {posargs}:传递给 tox 命令的额外参数。
- {envtmpdir}:当前测试环境的临时目录路径。
- {toxworkdir}:tox 工作目录路径,用于存储临时文件和日志等。
4. tox常用命令
tox:运行 Tox 测试环境。默认情况下,会运行配置文件中定义的所有环境。
tox -e envname:运行指定环境。
envname是在配置文件中定义的环境名称。tox -c path/to/config:使用指定的配置文件运行 Tox。通过这个选项,你可以指定使用不同的配置文件。
tox -r:重建虚拟环境。这个命令会强制 Tox 重新创建虚拟环境,有助于解决环境问题。
tox -l:列出可用环境。这个命令会列出在配置文件中定义的所有环境,方便你查看可用选项。
tox --notest:跳过运行测试。使用这个选项可以让 Tox 只创建虚拟环境而不运行测试。
tox --installpkg path/to/package:安装指定的包到虚拟环境中。这个命令可以让你手动安装额外的包到 Tox 管理的虚拟环境中。
tox --showconfig:显示最终的 Tox 配置。这个命令可以帮助你查看最终生效的配置信息。
博文参阅:
【Python自动化测试环境管理】tox的更多相关文章
- python自动化测试(2)-自动化基本技术原理
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...
- python自动化测试(4)-使用第三方python库技术实现
python自动化测试(4)-使用第三方python库技术实现 1 概述 关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 ...
- python自动化测试(3)- 自动化框架及工具
python自动化测试(3) 自动化框架及工具 1 概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...
- 优雅的使用python之环境管理
优雅的使用python之环境管理 缘起 情景1:不同python版本的管理 同一电脑上的多个python版本之前的管理,为了突出问题的普遍存在,下面是有人在segmentfault上提的问题. 摘自: ...
- (学习网址)Python 自动化测试
1.Python自动化测试地址 http://www.wtoutiao.com/author/python-selenium.html 2.unittest参考网址: 1)python自动化测试报告H ...
- python 自动化测试资料
python 自动化测试资料: http://yunpan.cn/QXVvwVJsAsPnb
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
- android - python 自动化测试 移动互联网 - SegmentFault
android - python 自动化测试 移动互联网 - SegmentFault splinter
- Python自动化测试 -ConfigParser模块读写配置文件
C#之所以容易让人感兴趣,是因为安装完Visual Studio, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...
- python自动化测试
python自动化测试 欢迎光临 python自动化测试 小站! 小站基于IT行业,重点关注python,软件自动化测试,测试等. 联系方式 飞信 372818219 相关的群:python开发自动化 ...
随机推荐
- WebSocket从入门到精通,半小时就够!
本文原题"WebSocket:5分钟从入门到精通",作者"程序猿小卡_casper",原文链接见文末参考资料部分.本次收录时有改动. 1.引言 自从HTML5里 ...
- 🎉 夜莺监控突破一万 star,这是汗水,也是鞭策
夜莺监控项目在上周突破了一万 star,算是一个小小的里程碑.在开源领域,通常把 star 数量看作项目的繁荣指标,star 数量越多,说明愿意关注你的人越多.这个数字的背后,是一群人对你的鼓励.认可 ...
- Android RNDIS gadget Windows免驱修改方案
过程简单粗暴,拿到竞品的设备,然后使用UsbTreeView查看设备的相关描述符. 对比发现接口抽象描述符和接口描述符不一致,直接修改Linux RNDIS gadget 驱动,将驱动中有关的两个描述 ...
- ASP.NET Core 中使用 Redis 实现分布式缓存:Docker、IDistributedCache、StackExchangeRedis
安装和配置docker (略)........... ASP.NET Core 使用分布式缓存 ASP.NET Core 中,支持使用多种数据库进行缓存,ASP.NET Core 提供了统一的接口给开 ...
- 日志数据采集-Flume
1. 前言 在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出.任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop ...
- Golang-接口7
http://c.biancheng.net/golang/interface/ Go语言接口声明(定义) Go语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念 ...
- DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计
Authorisation Bypass 授权绕过(Authorisation Bypass)是一种严重的安全,通过利用系统的或错误配置,绕过正常的访问控制机制,获得未经授权的访问权限.这种可能导致敏 ...
- 头文件中 ifndef/define/endif 有什么用?
1. 相同的声明可以多次出现,重复声明不是错误! 定义不可以,无论是单个文件还是多个文件,某个特定作用域(比如全局变量),不可以重复定义变量. 2. 类/结构体的定义可以在多个文件中多次出现,但是不可 ...
- 218:解释LINUX文件系统权限
- “翼”鸣惊人,天翼云两篇论文被ACM ICPP 2024收录!
*日,由天翼云科技有限公司弹性计算产品线天玑实验室撰写的两篇论文<PheCon: Fine-Grained VM Consolidation with Nimble Resource Defra ...