【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开发自动化 ...
随机推荐
- Object.freeze冻结属性和v-if结合requestAnimationFrame分帧渲染解决白屏
计算100W条数据的长度造成2s延迟 <template> <div> <h1>数据总长度{{ arrList.length }}</h1> </ ...
- 使用sphinx-book-theme构建文档
使用sphinx-book-theme构建文档 sphinx-book-theme https://www.sphinx-doc.org/en/master/#confval-language pip ...
- 使用 SK Plugin 给 LLM 添加能力
前几篇我们介绍了如何使用 SK + ollama 跟 LLM 进行基本的对话.如果只是对话的话其实不用什么 SK 也是可以的.今天让我们给 LLM 整点活,让它真的给我们干点啥. What is Pl ...
- 最新AI智能体开发案例:Coze工作流必备神器!教你用Coze平台搭建「扣子工作流生成神器」智能体!
点击 疯狂老包 > 点击右上角"···" > 关注我 各位小伙伴们,大家好呀!我是疯狂老包.我精心打造的<疯狂AI智能体开发:100个实战案例, 从 入门到精通 ...
- 2020年最新Redis面试题-copy
什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库. Redis 可以存储键和 ...
- 小程序之confirm-type改变键盘右下角的内容和input按钮详解
confirm-type的介绍 confirm-type 在什么时候使用呢? 如果说搜索框的时候,当用户输入完了之后,我们就需要 将confirm-type="search"的值设 ...
- P1787 [入门赛 #22]非众数 Hard Version 题解
P1787 [入门赛 #22]非众数 Hard Version 题解 原题传送门 这里对 pjh0625 的题解进行了详细解释 1. 读题 题目要求计算给定字符串中非众数子串的数量. 非众数子串 的定 ...
- VLDB来啦!企业上云“搭子”天翼云TeleDB数据库有话说
近日,VLDB 2024(International Conference on Very Large Data Bases)在广州隆重举行,全球数据库领域顶尖学者汇聚一堂,围绕数据库行业前沿议题展开 ...
- shell学习之保存数据库
自动备份 Mysql 数据库脚本 #!/bin/bash #author by wxp #used to backup mysql practise USER=root PASSWD=1234 HOS ...
- 线性空间与线性基(待整修,现在是史,OIwiki上的史。)
各代数结构定义 群 对于一个集合 \(G\) 和运算 \(\times\),若其满足:封闭性.结合律,具有单位元,对于每个元素都有逆元,则称呼 \((G,\times)\) 为一个群. 阿贝尔群,或交 ...